信盈达—您身边的嵌入式&人工智能专家
全国免费咨询热线:400-8788-909

嵌入式linux开发新手初学常见的一些问题和解决方法

时间:2018-07-02 00:00:00 来源:信盈达 作者:信盈达

初学的学员在学习嵌入式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.指针与一般整数变量之间的关系运算没有意义,但指针可以和零进行等于或不等于的关系运算,判断指针是否为空


信盈达2008年在深圳特区南山高新科技园成立。自成立至今近九年来专注为企业和个人提供高端方案设计、高端嵌入式/Android培训等服务。公司下设信盈达实训学院、信盈达研发中心、信盈达教学仪器三大业务板块。九年来公司坚持"技术领先、服务领先",以雄厚的实力和专业的品质成为国内唯一有实力从产品最底层研发到系统层开发的嵌入式实训、产品解决方案提供商。为中国IT行业提供最具价值的职业教育服务。专业培训i嵌入式、物联网、人工智能Java、单片机等课程,想了解更多信息点击立马咨询