主题 : mini6410初始化问题 复制链接 | 浏览器收藏 | 打印
级别: 新手上路
UID: 34238
精华: 0
发帖: 27
金钱: 135 两
威望: 27 点
贡献值: 0 点
综合积分: 54 分
注册时间: 2010-12-13
最后登录: 2017-09-13
楼主  发表于: 2012-11-26 16:57

 mini6410初始化问题

各位大侠,我自己参考mini6410的板精简的一个板,内存是256M的,核心部分和mini6410一样,内存芯片是三星K4X1G163PE,启动是从SD卡,现在问题是启动不正常,有时候能启动,有时候不能,通过点灯跟踪发现是把BL1的boot程序拷贝到DDRAM后,跳转到DDRAM运行的时候出错了,初步怀疑是对CPU或者DDRAM控制器的初始化出问题,我是参考友善U-BOOT和CE6.0的nboot启动代码,经过对比,程序没有错误,奇怪的是启动10次大楷有2次可以,或者断电时间长点启动成功率会高些。我连续开关机可以发现我在启动代码里面点的灯,就是启动不了,运行到DDRAM的代码死机,说明每次CPU都是正常启动的,BL1的拷贝函数我用的是iROM的CopyMovitoMem,请问那位大侠能发个启动正常的初始化代码,对比下,看看是那里出问题了,谢谢哈
*無鈳取玳
级别: 论坛版主
UID: 27
精华: 12
发帖: 5398
金钱: 40120 两
威望: 17929 点
贡献值: 71 点
综合积分: 11036 分
注册时间: 2008-01-16
最后登录: 2014-11-22
1楼  发表于: 2012-11-26 17:06
参考tekkamanninja的u-boot 2011.06 for mini6410?
https://github.com/tekkamanninja/u-boot-2011.06-for-MINI6410
"If you have an apple and I have an apple and we exchange apples, then you and I will
still each have one apple. But if you have an idea and I have an idea and we exchange
these ideas, then each of us will have two ideas."
级别: 新手上路
UID: 34238
精华: 0
发帖: 27
金钱: 135 两
威望: 27 点
贡献值: 0 点
综合积分: 54 分
注册时间: 2010-12-13
最后登录: 2017-09-13
2楼  发表于: 2012-11-27 15:59
这个uboot貌似是从NAND FLASH启动的
另外想请教下,我能否用J-LINK来调试,写一个小于8K的测试程序,使能S3C6410的调试模式,在裸机情况下可以直接通过J-LINK下载程序到CPU内部的RAM (0x0c000000)空间调试吗, CPU内部的RAM (0x0c000000)空间是一直可以的吗还是需要另外初始化,程序地址映射到0地址开始还是0x0C000000开始呢
*無鈳取玳
级别: 论坛版主
UID: 27
精华: 12
发帖: 5398
金钱: 40120 两
威望: 17929 点
贡献值: 71 点
综合积分: 11036 分
注册时间: 2008-01-16
最后登录: 2014-11-22
3楼  发表于: 2012-11-27 16:26

 回 2楼(tonsincs) 的帖子

SRAM空间应该是一直可用的。我想在NAND Flash和SD启动的模式下,6410会把SRAM的起始地址映射到0x0;而在NOR启动的模式下0x0地址属于NOR Flash地址空间。至于程序的话,链接地址应该写成0x0, 因为程序会在那里执行。
"If you have an apple and I have an apple and we exchange apples, then you and I will
still each have one apple. But if you have an idea and I have an idea and we exchange
these ideas, then each of us will have two ideas."
级别: 新手上路
UID: 34238
精华: 0
发帖: 27
金钱: 135 两
威望: 27 点
贡献值: 0 点
综合积分: 54 分
注册时间: 2010-12-13
最后登录: 2017-09-13
4楼  发表于: 2012-11-28 10:24
谢谢kasim,我先用JLINK试试看

下午接上J-link测试了下,我的测试流程是这样的,先关闭电源,接上仿真器,插上SD卡,SD卡的BL0区有启动程序,然后打开电源,再打开jlink的命令行j-link command,jlink提示找到CPU。我用mem命令分别读0x0c000000和0地址的数据,发现两个区域的数据是不相等的,我查看了0x0c000000前面几百个字节的数据是和我SD卡的BL0区域的数据相同,
这个说明了IROM正确把数据读入到0x0c000000的区域了,但是0地址的数据不同,但是第一条指令也像是ARM的跳转指令,我怀疑这个是IROM的程序数据,这个时候IROM还没有把0x0c00000区域映射到0地址,或者是还没运行这个BL0的程序,还在IROM里面运行,我用IAR写的简单测试程序,不管是把程序链接到0地址,还是0x0c000000都无法下载调试,提示:failed to get CPU status after 4 retries
大家这样测试过吗,头晕啊
[ 此帖被tonsincs在2012-11-28 16:30重新编辑 ]