S3C2410在MDK下调试的一些小结

总结1.

错误输出:

Build target 'Target 1'

assembling init_test.s...

linking...

Startup.axf: Error: L6320W: Ignoring --entry command. Cannot find argument 'Reset_Handler'.

Startup.axf: Warning: L6320W: Ignoring --first command. Cannot find argument 'Reset_Handler'.

Target not created

 

原因是realview mdk的链接器默认设置入口地址为Reset_Handler,只需在第一条跳转指令前加下如下语句即可:

export Reset_Handler

Reset_Handler

 

总结2.

ini文件里面可以是一些调试命令或调试函数,这些命令和函数用来初始化一些寄存器等.

ini文件通常添加在debug---initialization file 里面.

例如
FUNC void Setup (void)
{
// <o> Program Entry Point
pc = 0x30000000;
}
map 0x48000000, 0x54000000 read write
指定0x48000000-0x54000000访问许可,可以指定为读(READ) (WRITE)和执行(EXEC) 访问

Setup(); // Setup for Running

 

总结3: 如何选择在ROM(0x0)或在RAM(0x30000000)处进行调试?

1.       在脚本SDRAM中设置PC指向;

2.       MDKoptions->linker选项的R/O Base里设置code的起始放置处

3.       MDKoptions->targetROM RAM的设置和sct脚本有关, 见阿南光盘文章:2410的分散加载文件.

4.       调试时,上述3个地方的设置需一致配合.

 

总结4: 如何用SFJ2410工具烧写nandflash

1.       确认GIVEIO驱动安装,以及jtag接口的OK

2.       SFJ2410.exe和映像文件XXX.binC盘根目录

3.       打开CMD窗口,切换到C盘根目录后输入SFJ2410 /f:XXX.bin

4.       按向导步骤烧录后重启开发板

问题:如何指定烧录区域?

 

总结5:C语言写寄存器

1.       注意位运算符的结合方向,取反后的数据,应该”&””|”;

------------------------------------------------------------------------------------------------------------------------ 

问题1:如何正确烧写大于4K的应用程序到板子上的nandflash并启动

      评估版MDK不能使用分散加载文件,是否就不能在启动代码中加入"搬运代码"

问题2:

   void uart_sendbyte(int nData)
{
    if(f_nWhichUart==0)
    {
        if(nData=='/n')
        {
            while(!(rUTRSTAT0 & 0x2));
            delay(10);     //because the slow response of hyper_terminal
            WrUTXH0('/r');
        }
        while(!(rUTRSTAT0 & 0x2));  //Wait until THR is empty.
        delay(10);
        WrUTXH0(nData);
    }
我软件仿真串口,到while(!(rUTRSTAT0 & 0x2));时总会停止,手动修改rUTRSTAT0为2后使程序能跑下去,但为何仿真串口没有输出,谁用过仿真串口么?

你可能感兴趣的:(c,脚本,Build,Terminal,hyper,delay)