这些小活动你都参加了吗?快来围观一下吧!>>
电子产品世界 » 论坛首页 » 嵌入式开发 » MCU » [讨论]请大虾们指教bootrom启动时的相关问题,我的bootrom已经可以跑

共10条 1/1 1 跳转至

[讨论]请大虾们指教bootrom启动时的相关问题,我的bootrom已经可以跑起来了

菜鸟
2007-04-09 06:09:13     打赏

我的板子配置如下:2410+am29lv160db(Nor)+k9f1208(Nand)

问题一:手动启动时出现下面的内容

Press any key to stop auto-boot...
Attaching to TFFS... CC
Identify AM29LV160 media.0x2249
tffsDevCreate failed.
Error:usrTffsConfig failed...
Error:0x06

[VxWorks Boot]:

我打算在norflash中用前640kb放置bootrom,后1408kb放置TFFS文件系统,VxWorks以文件形式放在TFFS中

请问这样的方法可行吗?从目前看到的资料来说是可行的,可是我的TFFS文件系统老是创建失败,请高手点出其中的关键所在

问题二:在自启动时出现如下乱码问题,请问只是为什么?

Press any key to stop auto-boot...
0
booting...

Error in boot line:
?? ? ?? ? ?? ??{,? ?? ? ? ??? ??
?? ? ? ? ? ?? ? ? ?  ?? ? ?? ? 鬟
??] p ??g  伙 Z ? 鼷 ? v ? ??m 漫 ? ? ?# ?~?
?? ?? ?
^
Error:Can not load boot file!...

Software interrupt
Exception address: 0x33f0b5bc
Current Processor Status Register: 0x00000013
Task: 0x33fb3bc0 "tBoot"

r0 = 1 r1 = 80000093 r2 = c0000278 r3 = 20
r4 = 2bd r5 = 0 r6 = 0 r7 = 0
r8 = 0 r9 = 0 r10 = 0 r11/fp = 33fb3760
r12/ip = 33f0e2a4 r13/sp = 33fb3748 r14/lr = 33f0b5bc pc = 33f0b5bc
cpsr = 13

Error:Can not load boot file!...能说明文件系统建立起来了吗?

Software interrupt 应该是因为文件系统没加载好而出现的中断!

欢迎和恳请大虾们指教小弟




关键词: 讨论     大虾     指教     bootrom     启动     相关     问题    

院士
2007-04-09 17:05:00     打赏
2楼
等着木头来吧~~

菜鸟
2007-04-09 17:34:00     打赏
3楼

tffsDevCreate failed说明文件系统创建失败。

首先在创建文件系统前擦除全部的flash,然后检查一下identify函数是否被调用了,可以增加打印看一下。


菜鸟
2007-04-09 17:34:00     打赏
4楼
还要看一下你的format和mount函数列表是不是空的

菜鸟
2007-04-11 06:28:00     打赏
5楼

谢谢woodhead ,你说的那些问题都看过了没有问题!

首先:在编译中出现如下warning: 编译可以通过生成bootrom,也可以启动
C:\Tornado2.2\target\config\all
S3C2410G\bootConfig.c
C:\Tornado2.2\target\config\allS3C2410G\bootConfig.c: In function `bootCmdLoop':
C:\Tornado2.2\target\config\allS3C2410G\bootConfig.c:1462: warning: implicit declaration o
f function `tffsDrv'
C:\Tornado2.2\target\config\allS3C2410G\bootConfig.c:1470: warning: implicit declaration o
f function `usrTffsConfig'
C:\Tornado2.2\target\config\allS3C2410G\bootConfig.c:1729: warning: implicit declaration o
f function `tffsDevFormat'
In file included from sysTffs.c:150,
from C:\Tornado2.2\target\config\allS3C2410G\bootConfig.c:3499:
lv160mtd.c: In function `lv160MTDIdentify':
lv160mtd.c:312: warning: assignment from incompatible pointer type

个人感觉tffsDrv() usrTffsConfig() tffsDevFormat() 这几个函数没用上,所以导致后来的TFFS格式化不成功
请问这是什么错误,什么原因?


菜鸟
2007-04-11 16:52:00     打赏
6楼

应该编译进去了,这几个函数都是没有执行条件的,只要编译了就能够运行。你用于创建TFFS的flash大小是多大?必须2的整数次幂


菜鸟
2007-04-11 20:33:00     打赏
7楼

我打算在norflash中用前320KB放置bootrom,后1728KB放置TFFS文件系统,VxWorks以文件形式放在TFFS中
这样的安排行吗?现在生成的bootrom是270kb,vxworks是980kb

另外lv160mtd.c中的

命令字序列如下:但我不确定其参数是否正确,请woodhead兄指教,norflash是am29lv160db

#define SETUP_ERASE 0x80
#define SETUP_WRITE 0xa0
#define READ_ID 0x90
#define SECTOR_ERASE 0x30 /*扇区擦除*/
#define BLOCK_ERASE 0x50 /*块擦除*/
#define READ_ARRAY 0xb0 /*软件ID读模式退出*/

#define UNLOCK_1 0xaa /*解锁写入值*/
#define UNLOCK_2 0x55

#define UNLOCK_ADDR1 0x555 /*解锁偏移地址[字]*/
#define UNLOCK_ADDR2 0x2aa

#define AM29LV160_DEID 0x2249 /*设备ID*/
部分定义如下:
#define FLASH_BOOT_ADRS (0x00050000)
#define FLASH_BOOT_SIZE (0x001b0000)
#define FLASH_BASE 0x00050000 /* Base address of Flash part */
#define FLASH_SIZE 0x001b0000 /* Total Flash available. */


菜鸟
2007-04-11 22:01:00     打赏
8楼

可以在格式化参数里面预留前面的bootrom部分。

关于命令字:总线如果是16位的,命令字序列就不对,应该使用0x8080。


菜鸟
2007-04-11 22:54:00     打赏
9楼

非常感谢woodhead 不厌其烦的解答

关于命令字:总线如果是16位的,命令字序列就不对,应该使用0x8080。

请问这是什么意思?该norflash总线确实是16位的,我对命令字序列很不懂,datasheet看了不是很明白,

应该使用0x8080,这是为什么,是什么意思?可能就是这部分的问题导致了tffs文件系统建立的错误

格式化参数如下:

STATUS sysTffsFormat (void)
{
STATUS status;
tffsDevFormatParams params =
{
#define HALF_FORMAT /*lower 320KB for bootimage, upper 1728KB for TFFS */
#ifdef HALF_FORMAT
{0x0005000l, 99, 1, 0x10000l, NULL, {0,0,0,0}, NULL, 2, 0, NULL},
#else
{0x00000000l, 99, 1, 0x10000l, NULL, {0,0,0,0}, NULL, 2, 0, NULL},
#endif /* HALF_FORMAT */
FTL_FORMAT_IF_NEEDED
};
/* we assume that the drive number 0 is RFA */

status = tffsDevFormat (0, (int)&params);
return (status);
printf("tffsDevFormat ok...");
}

另外:

需不需要在在sysLib.c中增加如下虚拟映射定义?
{
(void *) (0x10000000), /*For TFFS*/
(void *) (FLASH_BOOT_ADRS),
ROUND_UP (FLASH_BOOT_SIZE, PAGE_SIZE),
VM_STATE_MASK_VALID | VM_STATE_MASK_WRITABLE | VM_STATE_MASK_CACHEABLE,
VM_STATE_VALID | VM_STATE_WRITABLE | VM_STATE_CACHEABLE_NOT
},
以及需不需要在rominit.c中增加对后1728kb的初始化?

再次感谢woodhead兄,如果系统建立好了,我会写一篇详细的开发日记作为对贵版的支持!


菜鸟
2007-04-13 05:51:00     打赏
10楼

再次向woodhead兄请教:

关于命令字:总线如果是16位的,命令字序列就不对,应该使用0x8080。

这里是什么意思?

请帮忙改一下这些参数,谢谢

#define SETUP_ERASE 0x80
#define SETUP_WRITE 0xa0
#define READ_ID 0x90
#define SECTOR_ERASE 0x30 /*扇区擦除*/
#define BLOCK_ERASE 0x50 /*块擦除*/
#define READ_ARRAY 0xb0 /*软件ID读模式退出*/

#define UNLOCK_1 0xaa /*解锁写入值*/
#define UNLOCK_2 0x55

#define UNLOCK_ADDR1 0x555 /*解锁偏移地址[字]*/
#define UNLOCK_ADDR2 0x2aa


共10条 1/1 1 跳转至

回复

匿名不能发帖!请先 [ 登陆 注册 ]