嵌入式linux开发新手初学常见的一些问题及解决方法(只适合新手看)

1.Bootloader部分:

a.很多人汇编部分会自己学着写

     如果HDIVN非0,则需要将fast bus mode 转换为asynchronous bus mode;为提高启动速度,需开启ICACHE;都是对p15协处理器进行操作,很多初学者容易混淆

    正确方式是:

    模式转换    mrc p15, 0, r1 ,c1, c0, 0  (换行) orr r1, r1, #0xc0000000  (换行) mcr p15, 0, r1, c1, c0, 0  

    启动ICACHE  mrc p15, 0, r0, c1, c0, 0  (换行) orr r0, r0 ,#(1<<12)     (换行)mcr p15, 0, r0, c1, c0, 0   

b.编译时 start.S warning: no newline end of file ---文件末尾要有一个回车,光标到下一行最左

  对于*.c文件的换行,用"\n\r"比较好

c.更新了一个文件再重新编译时,出现 warning clock skew detected 

      ---make clean后再make可解决(虽然该警告不影响编译,但解决了比较好)


2.linux操作系统部分:

a.装在虚拟机上的linux,若系统文件没有指定IP,重启时需要重新设定IP, 可在/etc/rc.d/rc.local文件中设定,加入

      ifconfig eth0 *.*.*.* (需要设定的IP地址)

 b.终端下执行某些指令,输出的内容太多,卷标托到最上也看不到全部,可使用如 ls > /home/print.txt使输出转移到指定       文件再查看

 c.linux退出vi,命令模式下用ctrl+shift+':',输入wq或q!;有些嵌入式终端却不行,则可能是设定成了shift+':'至末尾


3.交叉编译环境及工具

a.使用ADS工具及Jlink,AXD有时会卡死,需注意make, debug等的节奏,刚开始使用感觉不太顺畅,需先关闭Jlink再重启

b.使用Jlink烧写裸板程序及u-boot,需要找到对应的*.jflash

c.查看u-boot和kernel的代码,用source insight比较好,要学会使用


4.代码的编写

a.脚本文件中不能有注释;类似  . =ALIGN(4);的语句, .和=之间要有空格,不然编译会出错

  新手查看Makefile比较困难,记住以下常用符号的涵义:

  -c代表只编译,不链接; $@代表目标; $^代表所有依赖对象; @<代表第一个依赖对象

b.volatile代表编译时不优化,设定一些常量时很有用;C语言中的void类型,代表任意类型,而不是空的意思,需要注意

c.指针与一般整数变量之间的关系运算没有意义,但指针可以和零进行等于或不等于的关系运算,判断指针是否为空


先写到这里

猜你喜欢

转载自blog.csdn.net/weixin_42111733/article/details/80851209