完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
扫一扫,分享给好友
菜鸟入门 问大侠几个问题行吗,谢谢:
TQ2440 norflash 2M nand 256M 实现的是程序下载到nor 再copy4K到SDRAM 并在SDRAM中运行 串口打印出字符串 main函数很简单 一个点灯测试的,几个打印输出的,其中串口设置都没什么问题,可以正常跑 head.s如下: .extern main .text .global _start _start: Reset: ldr sp, =4096 @ 设置栈指针, bl disable_watch_dog @ 关闭WATCHDOG bl clock_init @ 设置MPLL,200M bl memsetup @ 设置存储控制器 bl copy_steppingstone_to_sdram @ 复制代码 bl on_sdram @ 跳到SDRAM中 on_sdram: ldr sp, =0x34000000 @ 设置栈指针 ldr lr, =halt_loop @ 设置返回地址 bl main @ 调用main函数 halt_loop: b halt_loop 问题: (1)bin文件是9k,可copy的只有4K啊 为什么能正常运行?(难道后面的部分编译连接的是没有调用的函数) (2)sp栈指针地址怎么设置的 按说是设置地址最高值,在norflash中跑,设的4096,但程序大于4K啊,不会冲突吗? 结果显示 4096,0x100000(1M),0x200000(nor总共才2M) ,0x200055都没错,为什么? (3)当把bl memsetup 到ldr sp,=0x34000000 5行都去掉 让其直接在nor运行,为什么点灯正常 打印乱码? (难道nor中运行的速度对串口时序有影响) 网上搜了很长时间,实在是不知道,希望大侠们教教,我不甚感激! |
|
相关推荐
1个回答
|
|
本帖最后由 woodmice 于 2014-3-22 21:13 编辑
1. 文件扩展名是bin,内容不一定是bin的,万一他是INTEL HEX格式呢?用记事本打开看下!?或者是其他的编码格式呢? 2. SP不应设置指向norflash, norflash只适用于按编程步骤写和随机读,不能满足堆栈随机读写的特性; on_sdram前,主程序调用的都是系统设置程序,并且实际上没有使用堆栈来保存数据,所以不管SP设置成什么,程序都会正确运行; 3. ‘把bl memsetup 到ldr sp,=0x34000000 5行都去掉 让其直接在nor运行’,和第二条中后面的说法一样,在on_sdram后面,调用main,开始使用C函数,而C函数传递参数、定义局部变量等操作都需要耗费大量堆栈空间; 此时程序在NORFLASH中运行,只要不是使用涉及堆栈空间的变量,就不会出问题,比如‘点灯’; 而使用堆栈空间的地方就会出问题,比如printf;因为写堆栈时相当于写flash,而写flash是需要特殊时序的,所以写堆栈是无效的,还是flash中原来的内容; 评分
|
|||
|
|||
你正在撰写答案
如果你是对答案或其他答案精选点评或询问,请使用“评论”功能。
飞凌嵌入式-ELFBOARD 硬件知识分享-ELF 2电源电路讲解
563 浏览 0 评论
1515 浏览 0 评论
飞凌嵌入式ElfBoard ELF 1板卡-mfgtools烧录流程介绍之烧写所需镜像
1357 浏览 0 评论
飞凌嵌入式ElfBoard ELF 1板卡-mfgtools烧录流程之烧写方法
793 浏览 0 评论
飞凌嵌入式ElfBoard ELF 1板卡-内核编译之初次编译
1239 浏览 0 评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-24 20:16 , Processed in 0.537204 second(s), Total 79, Slave 60 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号