• 嵌入式linux开发:杂七杂八的话


    1. 编译器:常用的有Sourcery,linaro等。当然芯片厂家一般也会提供可用的编译器。

    2. 将配置和编译时的输出O到其他位置:make O=some_dir

        这样做的好处是保持源代码树的干净。

        注意:O选项必须在每条make命令中给出:

        make gconfig O=...

        make ARCH=arm CROSS_COMPILE=... O=...

    3. 多进程并行编译:make jN,N是并行进程数量。

    4. DeviceTree位置(以arm为例):arch/arm/boot/dts/

    5. disk image文件分析

        windows下可以用winhex;

        linux下可以用losetup加载disk image到loopback device (/dev/loopX)

        然后用parted工具分析loopback device上的partition

        获得分区信息后继续用losetup按分区加载image

        之后就可以用mount挂载loopback分区了

    6. EasyBCD安装CentOS

        我们需要一个fat32分区,将iso复制到该fat32分区上;

        从iso中解压images/和isolinux/;

        使用EasyBCD添加grub启动项,并从其启动;

        root (hdx, y)

        kernel (hdx,y)/isolinux/vmlinuz

        initrd (hdx,y)/isolinux/initrd.img

        boot

    7. 编译出来的uboot(包括SPL)可能需要先转成image才能写入flash。转换工具一般厂商会提供

    8. 64位CentOS可能需要额外安装32位lib才能make gconfig/xconfig

    9. vncserver如果报bad display name,在/etc/hosts中加入我们的hostname

    10. busybox的tftp

        tftp -g -r file host  #get remote

        tftp -p -l file host  #put local

    11. nfs配置文件(man之)

        /home/user    ip/mask(insecure,rw,sync,all_squash,anonuid=0,anongid=0)

    12. tftp server的root在/etc/xinetd.d/tftp中以-s参数指定

        一般在/var/lib/tftpboot

    13. driver的Makefile:看Documentation/kbuild

    14. dts的编译

        执行目录[arch/arm/boot]

        # scripts/dtc/dtc dts/xxx.dts -o xxx.dtb -O dtb  # -o filename -O format

    15. 编译完成后在system.map中可以看到内核符号表和kernel在内存中的位置

    16. cat /proc/iomem可以看到memory layout

    17. uboot的board config:

        include/configs/xxx.h

        autoconf.mk   #在make后生成

    18. 可以先用initramfs+静态dev测试kernel

        /dev目录下放console,tty[0-4],ttyS[0-4]。

        使用--static编译的一个打印一段message的程序作为/bin/init

    19. 静态dev和简单init测试通过后再用devtmpfs

    20. kgdb

        see Documentation/DocBook,kgdb需要启动参数

        (DocBook需要make htmldocs,事先安装xmlto)

        下到板子的还是uImage,vmlinux是给gdb的调试文件((使用了-g选项编译))

        minicom -s配置串口,清除modem初始化序列

        C-AQ退出minicom

        arm-linux-xxx-gdb vmlinux

        (gdb) set remotebaud 38400

        (gdb) target remote /dev/ttyUSB0    # 假设你的host上通过ttyUSB0连接到开发板

    21. 使用initramfs时不能自动挂载devtmpfs,需要手动挂载:

        mount devtmpfs /dev -t devtmpfs

    22. mtd_utils:

        flash_erase -j /dev/mtd1 0 0  #格式化为jffs,使用RAW dev

        mount /dev/mtdblock1 /mnt/mtdblock1 -t jffs2  #使用block dev

        还有其他一些flash_xxx工具

    23. 一般较流行的板子在内核中都会有defconfig,例如

        make ARCH=arm socfpga_defconfig

        可用的defconfig在arch/arm/configs/

    24. busybox下设置时间

        date MMDDHHMMYY

               月 日 时 分 年

  • 相关阅读:
    工作总结(二):Web Design
    工作总结(一):Linux C
    三十分钟学会AWK
    MySQL并发复制系列二:多线程复制 2016
    修改MySQL 5.7.9版本的root密码方法以及一些新变化整理
    sync_binlog innodb_flush_log_at_trx_commit 浅析
    MariaDB的"response time"插件
    Python学习九:列表生成式
    python中的深拷贝和浅拷贝理解
    Mycat 配置
  • 原文地址:https://www.cnblogs.com/byeyear/p/3859364.html
Copyright © 2020-2023  润新知