请教移植调试过程中的问题,谢谢了!

你的意思是串口输出信息太多导致串口信息接收出现了问题?

我这种测试我该如何进行呢?不间断大量向串口输出信息?

发/受大量数据.
你有几个串口?有两个的话要方便一些.

可能就是负载的关系,我只使用了一个串口的.先不管了.

现在运行的时候没有使用到flash驱动,想在别的同类型的 flash芯片类型的基础上修改,但是看代码的时候一直不明白一个MTD的东西,它解释为memroy technology driver ,还有对应的版本号,但是我还是不清楚它到底指的什么意思,是不是和使用的flash类型有关?假如是的我怎么查询它到底是什么版本呢?

你的闪存是什么厂商的?什么型号?

型号:Intel 28f128J3C

是不是我的flash型号包含在…\flash\mtd-flash\intel\iCFI_ident.c文件中virtual结构中所包含的flash类型我就可以使用其中的文件组建mian()函数中flash type结构f3s_flash_t或者是f3s_flash_v2_t结构了,而不需要自己写相关的函数了,不知道是不是这个意思的?现在我不清楚MTD的版本号,所以不知道该用哪个结构:f3s_flash_t : f3s_flash_v2_t

等回复好漫长,先把另外的疑问附上,先谢谢了:
(1)假如有了flash驱动,我不清楚怎么调试 flash驱动,是不是可以执mkdir,rm之类的命令就可以了?

(2)按照一些例子我写了自己的flash驱动,在buildfile中添加后在dev文件夹下也能看到fs0p0和fs0的两个文件,再在buildfile中的flsh驱动后添加:
waitfor /dev/fs0p0
flashctl -p /dev/fs0p0 -o 3M -l 13M -m -i -vvvv

ps: flash总共两块,每块16M,第一块flash中前面3M空间存放系统镜象文件,剩余的13M我想建立flash文件系统,而第二快flash不作使用,供以后扩展使用的,不知道这样的flashctl是否合理的?

运行后提示信息挂载失败:
Mounting device /dev/fs0p0 at /fs0p0
DCMD_F3S_MOUNT failed (errno 302)
flashctl: mounting partition failed

不知道上面flashctl是不是有问题?
随后执行mkdir之类都提示不执行或者是unlink,can’t find device的提示,是不是和挂载失败有关的?

先删除.
flashctl -p /dev/fs0p0 -o 3M -l 13M -e
然后格式化.
flashctl -p /dev/fs0p0 -o 3M -l 13M -f
然后将驱动杀掉重新启动.

是直接使用kill devf-ep9315来杀掉flash驱动吗?

假如驱动可以以后是不是在任何的文件夹都可以任意的新建,删除之类的操作,还是只是在/fs0p0文件夹内可以的。

slay devf-generic
只能操作/fs0p0

(1) 多谢comquter,试过了comquter说的方法,首先启动flash驱动,对/dev/fs0p0用-l擦除3-13M,再对/dev/fs0p0用-l对3-13M格式化,再次启动后就有两个分区了,关键是运行时出现了flashctl: format failed的提示,不知道是怎么的不正确操作导致的,格式化语句是:
flashctl -p /dev/fs0p0 -o 3M -l 13M -f

(2) 还有一个问题,以前调试都是将ipl制作成一个工程运行的,现在想将ipl和ifs下载下去从flash启动,不知道是该使用哪个ipl的:image文件夹下的ipl-.bin还是ipl\boards*\arm\le文件夹下的ipl-**?
我分别将两个ipl下载到flash的首地址,接着gu固定位置下载ifs文件,但是没有任何的动静。不知道这样的做法有没有问题的?

1)格式化语句没错,但不知道之前你对FLASH是怎么操作的,不能肯定问题出在哪里.
2)一般来说image下面的IPL应该是可以直接写到FLASH里去的,ipl\boards\下面的要经过objcopy才行.当然要看具体的script是怎么写的.有关objcopy,文档里有说明.

(1)buildfile中是如下形式写的,这几天板子不在手上,不能调试,我相想会不会和reopen有关呢?其他我是看不出问题
devf-ep9315 -s 0x60000000, 32M &
waitfor /dev/fs0p0
reopen

flashctl -p /dev/fs0p0 -o 3M -l 13M -e
flashctl -p /dev/fs0p0 -o 3M -l 13M -f

slay devf-ep9315
devf-ep9315 -s 0x60000000, 32M &

错误提示为:
DCMD_F3S_FORMAT failed (errno 22)
flashctl: format failed

(2)对于不能从flash驱动一直挺郁闷的,我是按照Cirrus EP9315 boot from flash 的方法来的,直接将ipl烧写在flash base + 0x04,前四字节是“CRUS”标识,也是直接使用的image文件夹下的ipl。现在将ipl写成工程形式直接从ram启动的,其实代码和现在需要烧写的ipl代码几乎是相同的,唯一有差的就是.s文件中芯片的初始化了。
当前ipl中芯片初始化做的事情为:

  1. 关看门狗定时器
  2. 禁止IRQ和FIQ
  3. 清空一个时钟控制寄存器
  4. 初始化sdram
  5. 进入main函数
    不知道以上的执行顺序是否合理或是缺了什么的?

你把FLASH删除/格式化都放到buildfile里去,岂不是每次启动都要执行一次?
只把驱动放进去就行了.
对/dev/fs0p0删除是有条件的.你所作的只有在没有文件系统的情况下才有效.一般要用对/dev/fs0对进行操作.
flashctl -p /dev/fs0 -o 3M -l 13M -e
你最好能够将FLASH驱动杀掉后再作格式化.

至于IPL,造成不能启动的可能因素很多,恐怕要慢慢查了.

谢谢comquter!
现在明白flash格式化的情况,其实原先的想法就是一启动就是想进行格式化清空空间的。但是对“对/dev/fs0p0删除是有条件的.你所作的只有在没有文件系统的情况下才有效.”还是不明白,既然还没有文件系统,那哪来的/dev/fs0p0可以让我删除呢?

至于ipl,我现在是不知道怎么查了,但是我想问题应该是在_start.s文件和ifs.bin文件了,因为其他部分在建工程时相同的。想先排除ipl代码上的问题再找别的。给comquter发了ipl的代码,麻烦抽空帮我检查一下哪些地方还存在问题的,谢谢了!

.word 0x53555243
你每次操作完FLASH后用"ls -ls /dev"看看就知道是怎么回事了.
你链接文件中的ROM地址不对.

.lnk文件修改为:
stack: ORIGIN = 0xc0000000, LENGTH = 0x1000
ram : ORIGIN = 0xc0001000, LENGTH = 0x70000
rom : ORIGIN = 0x60000000, LENGTH = 0x100000

其中sdram 0片选,flash 6片选,下载后不能运行的!
9315内部有bootrom,所以又将rom起始地址修改为0x00000000,
一样不能脱机跑!
我flash的分配是前3m是raw data,其中前1m是ipl,后2m是
ifs.bin文件,剩余的13m作为flash文件系统。

撇开芯片初始化,还有哪些方面存在隐患的?
我再一一查一下!

SDRAM地址为0xC0000000?为什么_start.S里stack设置为0?
mov r0, #0x00000000
add sp, r0, #0x1000

这个今天检查代码时发现了,修改为:
mov r0, #0xc0000000
add sp, r0, #0x1000

修改后运行还是老样子。

不知道上电后有没有进入ipl的bin文件执行,不知道该如何判断的,纳闷,现在不知道从何下手了,仿真器太贵的!

comquter还有怎样得建议或是提醒呢?