在架构bootloader是遇到的错误

在设置svc模式好之后调试时出现了一下的问题

Make al

Arm-linux-gcc -g -c start.o -o strart.S

Arm-none-linux-gnueabi-gcc;start.o:no such file or directory

Arm-none-linux-gnueabi-gcc;no input file

Make:*** [start.o]错误1

经过检查发现错误:

在编译时把  arm-linux-gcc -g -c $@  -o $^

修改成 arn-linux-gcc -g -c $^之后问题解决

二:在编写makefile文件时要时刻注意空格键与tab键到底用的是那个;我遇到的是在以下代码中

 all: start.o

 arm-linux-ld -Tgboot.lds -o gboot.elf $^

B arm-linux-objcopy -O binary gboot.elf gboot.bin

%.o %.S

B arm-linux-gcc -g -c $^

%.o %.c

B arm-linux-gcc -g -c $^

 

 

C .PHONY: clean

D clean:

B rm *.o *.elf *.bin

经过本人验证:

A处前面的空格要一空格键打出,不然就会出现错误

B处的空格要以tab键打出,不然显示的是 遗漏分隔符

Ctab键和空格键那个都不报错,但若用了tabclean将不起作用

D处虽然tab键和空格键都不报错,但

在语句里面空格键那个都行

 

三:在循环点亮led时我写的以下延时程序虽无错误但无法点亮led

  Int time

dely(time)

{

for(;time>0;time--)

;

}

 

当我修改到以下程序时就可以点亮了:

 

 

dely(int time)

{

for(;time>0;time--)

;

}

总结:用C编写相关的功能函数时,若将变量定义在函数外面,有可能对实现该功能造成影响!

四:一个细节,一旦粗心就会出错,在使用或配置寄存器时要看看之前宏定义时的方式  比如:#define NFSTAT (volatile unsigned char *)0x70200028

在使用时要用*NFSTAT)配置或传参

#define *NFSTAT (volatile unsigned char *)0x70200028

使用时要用NFSTAT配置或传参

不然可能会出现操作数无效或无法计算的错误

五:出现underfined  reference to xxxxxx的问题

在建立串口控制台时,第一由于是初次在文件中套文件  即一个文件上级makefile要链接下级makefile所以会出现问题,

我出现的问题是第一次有一个函数书写错误导致编译不通过,但改正之后还是同样的错误!经过不断地测试;我发现当我挨个将每个文件或出现问题的文件make clean 即清除一下之后就ok了,而且如果不这样做,在上级直接make clean是不会clean掉下级中的文件的,然后再make,一般就好了!

 

六:linux编译时遇到警告:检测到时钟错误,您的创建可能不完整

root的终端输入find . -type f -print | xargs touch即可。。。

在有的网页上看到find . -type f -exec touch{}\;这个我一回车马上提示exec缺少参数,不知道是怎么回事,不过现在先有个感观上的认识吧,然后慢慢的深究,一定能找到原因的。。。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值