跳到主要内容

更新日志

· 阅读需 7 分钟
pansyhou

日志

  • 2023.9.7: 完成剑指 Offer 67. 把字符串转换成整数 纯粹浪费我时间,题解都用long long存,自己骗自己呢 明天记得看一看自动机

    linux板:

    目前已经确认应该是启动选项飞到了网络启动导致的vfs启动 但是依旧解决不了nfs不能访问的问题。 很明显问题已经轻松解决,因为uboot的nfs是V2

    u-boot NFS下载文件报错:Loading: ** ERROR: File lookup fail解决方法_uboot nfs loading:-CSDN博客 搞好之后第二遍确认他bootz后采用的是网络启动,应该是就是这句

    netargs 'setenv bootargs console=${console},${baudrate} root=/dev/nfs ip=dhcp nfsroot=${serverip}:${nfsroot},v3,tcp'

    已经初步用busybox构建好一些小软件 image-20230907222151573

    启动3件套
    tftp 80800000 zImage
    tftp 83000000 imx6ull-14x14-emmc-4.3-800x480-c.dtb
    tftp 83000000 imx6ull-alientek-emmc.dtb
    bootz 80800000 - 83000000
  • 2023.9.8

    • 创建/etc/fstab挂载需要的分区
    • 创建/etc/init.d/rcS 文件启动一些服务
    • 创建/etc/inittab
    • 编写字符驱动笔记

    哥们要准备去考研了呜呜

  • 2023.9.9

    • 遇到了强有力的问题,驱动加载不进去

      /lib/modules/4.1.15-g3dc0a4b # insmod led.ko
      [ 2497.242677] led init!
      [ 2497.245488] do_init_module: 'led'->init suspiciously returned 10, it should follow 0/-E convention
      [ 2497.245488] do_init_module: loading module anyway...
      [ 2497.259916] CPU: 0 PID: 160 Comm: insmod Tainted: G O 4.1.15-g3dc0a4b #1
      [ 2497.267870] Hardware name: Freescale i.MX6 Ultralite (Device Tree)
      [ 2497.274249] [<80015d78>] (unwind_backtrace) from [<8001271c>] (show_stack+0x10/0x14)
      [ 2497.282017] [<8001271c>] (show_stack) from [<808237e8>] (dump_stack+0x84/0xc4)
      [ 2497.289314] [<808237e8>] (dump_stack) from [<8082199c>] (do_init_module+0x88/0x1a8)
      [ 2497.297023] [<8082199c>] (do_init_module) from [<800964d4>] (load_module+0x1ba8/0x1e50)
      [ 2497.305072] [<800964d4>] (load_module) from [<80096938>] (SyS_finit_module+0x80/0x90)
      [ 2497.312921] [<80096938>] (SyS_finit_module) from [<8000f480>] (ret_fast_syscall+0x0/0x3c)

      她可以跑到我init的最后一句,mknod /dev/led c 200 0创建节点后,读写/dev/led是失败的,有/dev/led这个文件 但是cat /proc/devices并没有这个设备。 哦原来是我没注册,我就说怎么找不到呢哈哈哈

  • 2023.9.10: 写完新字符驱动了,感觉理解还不是很到位 image-20230911150033369

  • 2023.9.11: 帮帮taffy吧,剑指 Offer 35. 复杂链表的复制 - 力扣(LeetCode)怎么做不出来呐呜呜

        Node* copyRandomList(Node* head) {
    if(head== nullptr)return nullptr;
    Node *NewHead = new Node(head->val);
    NewHead->random = head->random;
    Node *tep = NewHead;
    unordered_map<Node *, Node *> map;
    map[head] = NewHead;
    while (head->next != nullptr) {
    map[head->next] = NewHead->next;
    //deep copy
    NewHead->next = new Node(head->next->val);
    NewHead->next->random = head->next->random;
    //next head
    head = head->next;
    NewHead = NewHead->next;
    }
    NewHead = tep;
    while (NewHead->next != nullptr) {
    //random指的还是以前的ptr,通过以前的ptr找到new
    NewHead->random=map[NewHead->random];
    NewHead = NewHead->next;
    }
    return tep;
    }

    这个问题,我的评价是留给以后的我吧,问题在random的处理上,链式处理感觉出问题了。

        Node* copyRandomList(Node* head) {
    if (head == nullptr) return nullptr;

    unordered_map<Node*, Node*> map; // 原始节点到复制节点的映射
    Node* current = head;

    // 第一次遍历:创建新节点并建立映射
    while (current != nullptr) {
    map[current] = new Node(current->val);
    current = current->next;
    }

    current = head;

    // 第二次遍历:设置新节点的next和random指针
    while (current != nullptr) {
    map[current]->next = map[current->next]; // 设置新节点的next
    map[current]->random = map[current->random]; // 设置新节点的random
    current = current->next;
    }

    return map[head]; // 返回复制链表的头节点
    }

    这个挺厉害的,建立映射还以为是链式的映射,没想到是每个旧节点和新节点的映射,最后通过映射将新节点串联起来,吊!

    linux板:

    受不了一点,你能不能直接说这个板子移植完之后设备树的LCD部分驱动不了?

    别欺负我没看网课啊,倒腾了2小时,还以为我移植过程有问题,看了看教程也没说,evk的dtb也是这样,估计cv过去没改好设备树 在后面几章才说... image-20230911221346507当然这是大的那块显示屏,我们找到4.3寸的参数套上去,编译make dtbs,将dtb导入就正常驱动lcd了 image-20230911223513556aa84f39b3638cff3bb40dd65b4e44c0

  • 2023.9.12剑指 Offer 18. 删除链表的节点 - 力扣(LeetCode)搞了点简单题

        ListNode* deleteNode(ListNode* head, int val) {
    if(head== nullptr)return nullptr;
    if(head->val==val)return head->next;
    ListNode *left=head;
    while (left->next != nullptr) {
    if (left->next->val == val) {
    if(left->next->next== nullptr) {
    left->next = nullptr;
    }
    else{
    left->next = left->next->next;
    }
    return head;
    }
    left = left->next;
    }
    return head;
    }

    没有用双指针,但是双指针能更好地规避一些问题,比如头节点就是val、尾结点是val要置空 可以看出来双指针能更简洁

  • 2023.9.14:哥们12号分手了,心情有点不是很好,不是很想写日志了先。

    不过记到设备树了。

  • 2023.9.19:pinctrl部分有点小难?主要是很绕

    image-20230919143314067没懂那个cell代表什么极性

  • 2023.9.22:今日有老板把我之前的uboot直接写进emmc里了,崩溃

    只好重新复活老uboot

    • EMMC8线驱动

    • LCD

    • NET

      Net: CPU Net Initialization Failed

      No ethernet found.

      我也忘了怎么修好的了,重新设置网络环境变量

      setenv ipaddr 192.168.123.122
      setenv ethaddr b8:ae:1d:01:00:00
      setenv gatewayip 192.168.123.1
      setenv netmask 255.255.255.0
      setenv serverip 192.168.123.109
      saveenv
    • tftp

      image-20230922204835590在想启动tftp 80800000 zImage的时候顺利爆金币了...

      倒腾了一晚上,在CSDN发现了问题所在 IMX6ULL 使用U-Boot Ping命令内核重启uboot使用网络命令导致重启琰婧的博客-CSDN博客

      内核panic我也要跟着panic了,谁知道是交叉编译的问题...

      但是呢,我觉得换编译器是更加离谱且困难的问题,于是再找找其他方案

      设置好uboot网络地址后,ping主机时,uboot重启_沙漠那点绿的博客-CSDN博客

      尼玛是内存对齐的问题

      翻到CP15的技术文档,首先是将SCTLR的寄存器读到了r0进行修改

      mrc p15, 0, r0, c1, c0, 0cpn=c1,cpm=c0

      image-20230922223132425

      image-20230922223054414

      focus on the second bit

        orr r0, r0, #0x00000002 @ set bit 1 (--A-) Align
      orr r0, r0, #0x00000800 @ set bit 11 (Z---) BTB

      image-20230922223304124

      源代码是这位爷设1对吧,这确实是内存对齐检测的问题

      其实可以讲通了,新版的编译器可能在内存越界/犯法问题,启动内存检测后导致非法,MMU强制重启系统

      把这玩意关了也不是不行?可能会爆点金币,但是过渡到Linux kernel启动后感觉没事的话也不是不行

      当然这是我这种不专业的外行人看法,欢迎大佬指正━(`∀´)ノ亻!

      最后要从网路启动需要设置bootargs

      setenv bootargs 'console=ttymxc0,115200 root=/dev/nfs nfsroot=192.168.123.109:/home/pansy/linux/nfs/rootfs,proto=tcp rw ip=192.168.123.122:192.168.123.109:192.168.123.1:255.255.255.0::eth0:off' //设置  bootargs
      setenv bootargs 'console=ttymxc0,115200 root=/dev/nfs nfsroot=192.168.123.109:/home/pansy/linux/nfs/rootfs,proto=tcp rw ip=192.168.123.122:192.168.123.109:192.168.123.1:255.255.255.0::eth0:off'

    life is bullshit , but you have no choice and have to move on.

  • 2023.9.23: 今儿总算是启动了,bootargs设置了一百年..

    很逆天的是,我printenv后有两个bootargs,有时候直接复制的命令是直接不能用的

    严重怀疑是串口终端有问题,secureRT要注册就没用...

    image-20230923133229745

    ok,成功电亮pinctrl和gpio子系统

  • 2023.9.26

    前几天写了一堆锁的例程,atomic、mutex、semaphore、spainlock

    写了gpio用原子锁的

    今天把按键的也写了

    然后学习定时器

  • 2023.10.6

    突然发现好久没有更新了,Linux小断了一段时间,最近在做JSp+servlet+mybatis这坨泄

  • 2023.10.11

    a sort of vulnability , sensitive

    我发现,如果你陷入一种内耗之中(比如感情

    可以尝试用英语去表达这种内耗,然后你就会陷入一种无语之中,因为你不知如何表达,那就算了

    实在不行就去做几套英语真题,30%正确率做到你自闭

    还想什么女人?

    vulnability

  • 2023.10.31

    很久不更新系列 )D

    最近接了一单大的,就是一个智能音箱

    base on android,感觉要讲的话就是长篇大论了

    感觉踩雷的东西挺多的

Loading Comments...