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

本文档详细介绍了嵌入式系统开发过程中常见的技术难题及解决方案,包括Bootloader编写技巧、Linux操作系统配置方法、交叉编译环境搭建注意事项以及代码编写规范等。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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


先写到这里

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值