完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
在ok6410上,程序在lds文件里面指定了分段,如下:
mmu.lds: SECtiONS { first 0 : { head.o init.o } second 3072 : AT(2048) { leds.o } } --------------------------- head.S: .text .global _start _start: ldr r0, =0x70000013 mcr p15, 0, r0, c15, c2, 4 ldr sp, =8192 bl disable_watch_dog //////// bl copy_2048_to_3072 //////// ldr pc, =2048 //////// ldr pc, =3072 bl main halt_loop: b halt_loop --------------------------- init.c: void copy_2048_to_3072(void) { unsigned int *pdwSrc = (unsigned int *)2048; unsigned int *pdwDest = (unsigned int *)3072; while(pdwSrc < (unsigned int *)(2048+512)) { *pdwDest = *pdwSrc; pdwDest++; pdwSrc++; } } --------------------------- leds.c: int main() { volatile unsigned int k; volatile unsigned int i,j; GPMCON = 0x11111; GPMDAT = 0x00000000; while(1) { for(k=0;k<4;k++) { GPMDAT=~(1< for(j=0;j<3;j++) ; } } return 0; } --------------------------- main函数在leds.c里面,用来点亮led 程序烧到板子led不亮,是从nand flash-steppingstone启动的 然后我把head.S的bl main 改成 ldr pc, =2048试试,因为第二段代码存储在镜像2048的位置,但还是不亮 接着把head.S的bl main 改成 ldr pc, =3072试试,因为第二段代码在3072位置运行,但还是不亮 最后加上 bl copy_2048_to_3072,把2048处的代码拷贝到运行地址3072,bl main 改成 ldr pc, =3072,还是不亮 相同的程序,我不用分段,在makefile里面用 ARM-linux-ld -Ttext 0x50000000 -o mmu_elf $^ 连接后编译的程序,led可以点亮,说明main点亮函数是没有问题的。 现在能试的都试了,不知道为什么程序分段后,就不好用了,麻烦各位大神帮看看,十分感谢! |
|
相关推荐
29个回答
|
|
arm-linux-ld -Ttext 0x50000000 -o mmu_elf $^ 是指定链接地址 0x50000000,你LDS又来个链接地址 那它到底听谁的?
|
|
|
|
谢谢韦老师的回答^_^
可能您没太懂我的意思,我的意思是说: 如果我makefile里面这么写: arm-linux-ld -Ttext 0x50000000 -o mmu_elf $^ #不用lds文件 灯是可以亮的,没有问题 如果把makefile这么写,用lds文件: arm-linux-ld -Tmmu.lds -o mmu_elf $^ #使用lds文件,lds内容请看1楼 那么led就是不亮的 很奇怪为什么用lds文件分段,led就不亮了? 谢谢韦老师^_^ |
|
|
|
分析两种方式的反汇编,看看有什么不一样
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
韦老师的《嵌入式Linux应用开发》的第123页的程序就是用分段的, 但是在我的ok6410上不行, 在我的ok6410上只有 不用分段 才能调试通过这个程序, 实在搞不明白了.
|
|
|
|
|
|
|
|
谢谢超版回复^^
现在main函数里面如下: int main() { GPMCON = 0x11111; //配置为输出 GPMDAT = 0x00000000; //点亮 return 0; } 分段后还是不亮的. 不用分段还是能亮的. 其实原来的main也没啥代码, 就是循环点灯 真是奇怪啊..... |
|
|
|
自己顶下^^
|
|
|
|
我来看看,新手……慢慢来
|
|
|
|
|
|
|
|
我猜测 你6410的IO地址有改吗
|
|
|
|
ldr pc, =main 试试
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
请看附件,谢谢^^
|
|
|
|
只有小组成员才能发言,加入小组>>
197个成员聚集在这个小组
加入小组为什么点亮LED的例子放在NORFlash上跑会出现奇怪的现象?
2156 浏览 6 评论
1962 浏览 5 评论
韦东山老师推出的《玩转ARM裸机实战》课程将帮你以上问题一扫而光!
4520 浏览 1 评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-11-21 16:30 , Processed in 1.037009 second(s), Total 117, Slave 96 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号