OK6410入手已经有一个多月了,根据优快云里cp1300大哥的帖子,一直用RVDS4.0 调试裸机,但毕竟用的是Jlink,经常有意想不到的错误产生。
今天意外地静下心来看了下韦东山的视频(虽然上边是用的Jtag调试的),又参考了其他前辈的一些帖子,终于弄明白了到底怎么用Jlink做裸机调试OK6410。
现在就把今天的收获整理一下,一是为了帮助自己记忆,一是回馈于网络。
1、准备代码
1)start.s(启动代码)
.globl _start
_start:
/* 硬件相关的设置,把外设的基地址告诉CPU */
/* Peri port setup */
ldr r0, =0x70000000
orr r0, r0, #0x13
mcr p15,0,r0,c15,c2,4 @ 256M(0x70000000-0x7fffffff)
/* 关看门狗 */
/* 往WTCON(0x7E004000)写0 */
ldr r0, =0x7E004000
mov r1, #0
str r1, [r0]
/* 设置栈 */
ldr sp, = 8*1024
bl main /*调用C函数*/
halt:
b halt
2)led.c(C语言主函数)
这个函数实现OK6410开发板上的4个led一次点亮构成流水灯(是用了)
#define rGPMCON (*(volatile unsigned*)(0x7F008820))
#define rGPMDAT (*(volatile unsigned*)(0x7F008824))
#define rGPMPUD (*(volatile unsigned*)(0x7F008828))
#define rGPFCON (*(volatile unsigned*)(0x7F0080A0))
#define rGPFDAT (*(volatile unsigned*)(0x7F0080A4))
#define PCLK 66000000 //for S3C641066MHZ
#define HCLK 133000000 //forS3C6410133MHZ
#define rTCFG0 (*(volatile unsigned*)(0x7F006000))
#define rTCFG1 (*(volatile unsigned*)(0x7F006004))
#defin