S3C2410在MDK下调试的一些小结

    技术2022-05-11  27

    总结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 Pointpc = 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后使程序能跑下去,但为何仿真串口没有输出,谁用过仿真串口么?


    最新回复(0)