OK6410学习之遇到的问题与C语言实现 流水灯
2014-04-12 08:25
387 查看
一、编译用C实现 裸机点亮led程序的时候报错
led.o:(.ARM.exidx+0x0): undefined reference to `__aeabi_unwind_cpp_pr0'
解决方法:
arm-linux-gcc编译的命令后面加一个参数 -nostdlib
禁用标准库文件和标准启动文件,因为裸机程序是通过自己写的汇编程序start.S来启动的
二、不能用烧录到RAM的方法测试
具体原因不清楚,烧到0x50008000的运行看不到效果
猜测应该是要烧录到nandflash上,通电的时候nandflash的8k空间的内容复制到6410的片内8k内存,然后执行,才可以成功
烧录到nandflash的方法:
先烧写到RAM空间0x50008000
然后擦除nand的1M空间:
nand erase 0 100000
把RAM的数据的拷贝到nandflashd的0——1M空间
nand write 50008000 0 100000
![](https://img-blog.csdn.net/20140412082119250)
第一个流水灯程序~~加油~
start.S
.globl _start
_start:
/* Peri port setup */
ldr r0, =0x70000000
orr r0, r0, #0x13
mcr p15,0,r0,c15,c2,4
ldr r0, =0x7E004000
mov r1, #0
str r1, [r0]
/* 设置栈 */
ldr sp, =8*1024
bl main
halt:
b halt
led.c
Makefile
led.o:(.ARM.exidx+0x0): undefined reference to `__aeabi_unwind_cpp_pr0'
解决方法:
arm-linux-gcc编译的命令后面加一个参数 -nostdlib
禁用标准库文件和标准启动文件,因为裸机程序是通过自己写的汇编程序start.S来启动的
二、不能用烧录到RAM的方法测试
具体原因不清楚,烧到0x50008000的运行看不到效果
猜测应该是要烧录到nandflash上,通电的时候nandflash的8k空间的内容复制到6410的片内8k内存,然后执行,才可以成功
烧录到nandflash的方法:
先烧写到RAM空间0x50008000
然后擦除nand的1M空间:
nand erase 0 100000
把RAM的数据的拷贝到nandflashd的0——1M空间
nand write 50008000 0 100000
第一个流水灯程序~~加油~
start.S
.globl _start
_start:
/* Peri port setup */
ldr r0, =0x70000000
orr r0, r0, #0x13
mcr p15,0,r0,c15,c2,4
ldr r0, =0x7E004000
mov r1, #0
str r1, [r0]
/* 设置栈 */
ldr sp, =8*1024
bl main
halt:
b halt
led.c
void delay() { volatile int i=0; while(i < 20000) i++; } int main(void) { volatile unsigned long * gpmcon = (volatile unsigned long *)(0x7F008820); volatile unsigned long * gpmdat = (volatile unsigned long *)(0x7F008824); int i = 0; *gpmcon = 0x1111; while(1) { for(i=0;i<4;i++) { *gpmdat = ~(1<<i); delay(); } } return 0; }
Makefile
led.bin:start.o led.o arm-linux-ld -Ttext 0 -o led.elf start.o led.o arm-linux-objcopy -O binary led.elf led.bin arm-linux-objdump -D led.elf > led.dis start.o:start.S arm-linux-gcc -o start.o start.S -c -nostdlib led.o:led.c arm-linux-gcc -o led.o led.c -c -nostdlib clean: rm *.o led.elf led.dis led.bin
相关文章推荐
- [Silverlight学习笔记]实现上传图片功能时遇到的问题
- android学习-----使用TabLayout实现Tab选项卡以及遇到的一些问题(一)
- 学习c语言遇到的一些问题(6)(随机存取)
- 【c语言学习笔记】指针数组和数组指针以及在做题的时候遇到的问题
- C语言学习过程中遇到的一些问题——already define in *.obj
- Android学习记录(三十)-- Android 关于手势Gesture的简单实现和实践中遇到的问题。
- C语言学习中遇到的问题与解决方法
- 学习c语言遇到的一些问题(4)(Linux)(不确定大小的数组)
- 学习c语言遇到的一些问题(2)(Linux)(makefile)
- 学习c语言遇到的一些问题(3)(Linux)(getchar()和gets()重点:scanf产生的回车符问题)
- android学习-----使用TabLayout实现Tab选项卡以及遇到的一些问题(二)
- 学习c语言遇到的一些问题(1)(Linux)(调用库函数)
- c语言学习中遇到的问题
- 一些学习单片机和C语言遇到的问题
- 今天在学习C语言循环时遇到的问题
- C语言学习中遇到的小问题(一)
- 学习C语言遇到的问题1
- 机器学习实战-KNN算法实现及遇到的问题总结
- C语言学习期间遇到的所有问题及解决-在15PB
- STM32学习中遇到的问题-(1)跑马灯的实现