ok6410第一个裸板程序led
2013-04-23 14:06
453 查看
开发环境:
系统:ubuntu10.04.4
单板:ok6410
编译器:arm-linux-gcc-4.3.2
搭建开发环境详见ubuntu10.04.4开发环境配置。
目标:实现ok6410单板上4个led灯闪烁
第一个程序很简单,用汇编实现。硬件如下:
NLED1——>GPM0
NLED2——>GPM1
NLED3——>GPM2
NLED4——>GPM3
根据s3c6410手册编写代码,包括2个文件start.S和Makefile.
文件start.S:
文件Makefile:
编译:
change@change:~$cdSi/OK6410/1_led/
change@change:~/Si/OK6410/1_led$ls
Makefilestart.S
change@change:~/Si/OK6410/1_led$make
arm-linux-gcc-ostart.ostart.S-c
arm-linux-ld-Ttext0-o1_led.elfstart.o
arm-linux-objcopy-Obinary1_led.elf1_led.bin
arm-linux-objdump-D1_led.elf>1_led.dis
change@change:~/Si/OK6410/1_led$cp1_led.bin/home/change/work/tftpboot/
下面会用到tftp,tftp配置详见ubuntu10.04.4开发环境配置。
烧写、测试:
考虑到大多数电脑没有并口也没有仿真器,直接用板子自带的u-boot测试程序,把程序放到内存运行。后期会写操作nand的自我更新程序,那时再下载程序就方便了。
系统:ubuntu10.04.4
单板:ok6410
编译器:arm-linux-gcc-4.3.2
搭建开发环境详见ubuntu10.04.4开发环境配置。
目标:实现ok6410单板上4个led灯闪烁
第一个程序很简单,用汇编实现。硬件如下:
NLED1——>GPM0
NLED2——>GPM1
NLED3——>GPM2
NLED4——>GPM3
根据s3c6410手册编写代码,包括2个文件start.S和Makefile.
文件start.S:
.globl_start _start: /*硬件相关的设置*/ /*Periportsetup*/ ldrr0,=0x70000000 orrr0,r0,#0x13 mcrp15,0,r0,c15,c2,4@256M(0x70000000-0x7fffffff) /*关看门狗*/ /*往WTCON(0x7E004000)写0*/ ldrr0,=0x7E004000 movr1,#0 strr1,[r0] /*设置GPMCON让GPM0/1/2/3作为输出引脚*/ ldrr1,=0x7F008820 ldrr0,=0x1111 strr0,[r1] /*设置GPMDAT让GPM3输出0*/ ldrr1,=0x7F008824 movr0,#0 loop: mov r0,#0x0 str r0,[r1] bl delay mov r0,#0x0f str r0,[r1] bl delay b loop delay: mov r4,#0x400 del1: mov r5,#0x1000 del2: sub r5,r5,#1 cmp r5,#1 bne del2 sub r4,r4,#1 cmp r4,#1 bne del1 mov pc,lr halt: b halt
文件Makefile:
1_led.bin:start.o arm-linux-ld-Ttext0-o1_led.elfstart.o arm-linux-objcopy-Obinary1_led.elf1_led.bin arm-linux-objdump-D1_led.elf>1_led.dis start.o:start.S arm-linux-gcc-ostart.ostart.S-c clean: rm*.o1_led.elf1_led.bin1_led.dis
编译:
Makefilestart.S
arm-linux-gcc-ostart.ostart.S-c
arm-linux-ld-Ttext0-o1_led.elfstart.o
arm-linux-objcopy-Obinary1_led.elf1_led.bin
arm-linux-objdump-D1_led.elf>1_led.dis
下面会用到tftp,tftp配置详见ubuntu10.04.4开发环境配置。
烧写、测试:
考虑到大多数电脑没有并口也没有仿真器,直接用板子自带的u-boot测试程序,把程序放到内存运行。后期会写操作nand的自我更新程序,那时再下载程序就方便了。
U-Boot2012.04.01(Jan112013-14:47:24)forSMDK6410 CPU:S3C6400@532MHz Fclk=532MHz,Hclk=133MHz,Pclk=66MHz(ASYNCMode) Board:SMDK6410 DRAM:128MiB WARNING:Cachesnotenabled Flash:0KB NAND:selects3c_nand_oob_mlc_64 id_data[0]=0xecid_data[1]=0xd5id_data[2]=0x94id_data[3]=0x29id_data[4]=0x34id_data[5]=0x41id_data[6]=0xecid_data[7]=0xd5NAND_ECC_NONEselectedbyboarddriver.Thisisnotrecommended!! 2048MiB realpagevalue:255 pagevalue:255 retvalue:0 ***Warning-badCRC,usingdefaultenvironment In:serial Out:serial Err:serial Net:dm9000 Hitanykeytostopautoboot:0 #####100askBootloaderforOpenJTAG##### Downloadu-boottoNandFlash [k]DownloadLinuxkerneluImage [j]Downloadroot_jffs2image [y]Downloadroot_yaffsimage [d]DownloadtoSDRAM&Run [z]DownloadzImageintoRAM [g]getfile,andwritetonandflash0block [f]FormattheNandFlash [s]Setthebootparameters [b]Bootthesystem [r]Rebootu-boot [q]Quitfrommenu Enteryourselection:q SMDK6410#printenv baudrate=115200 bootargs=console=ttySAC0,115200root=/dev/mtdblock3 bootcmd=nandread0x500000000x600000x200000;bootm0x50000000 bootdelay=5 ethact=dm9000 ethaddr=00:0c:29:4d:e4:f4 ipaddr=172.16.1.111 netmask=255.255.255.0 serverip=172.16.1.114 stderr=serial stdin=serial stdout=serial Environmentsize:313/524284bytes SMDK6410#setipaddr172.16.1.133 SMDK6410#setgatewayip172.16.1.1 SMDK6410#setserverip172.16.1.135 SMDK6410#ping172.16.1.135 dm9000i/o:0x18000000,id:0x90000a46 DM9000:runningin16bitmode MAC:00:0c:29:4d:e4:f4 operatingat100Mfullduplexmode Usingdm9000device host172.16.1.135isalive SMDK6410#save SavingEnvironmenttoNAND... Env_nand.c... env_nand.csaveenvstart1 env_nand.csaveenvstart2 res=1472200204len=524284 ErasingNand... Erasingat0x80000--100%complete. WritingtoNand...done
SMDK6410#tftp0x520000001_led.bin dm9000i/o:0x18000000,id:0x90000a46 DM9000:runningin16bitmode MAC:00:0c:29:4d:e4:f4 operatingat100Mfullduplexmode Usingdm9000device TFTPfromserver172.16.1.135;ourIPaddressis172.16.1.133 Filename'1_led.bin'. Loadaddress:0x52000000 Loading:# done Bytestransferred=128(80hex) SMDK6410#go0x52000000 ##Startingapplicationat0x52000000... u-boot下执行完上述命令。ok6410单板上4个LED即开始闪烁。上面的u-boot是我仿照韦老师的jz2440移植的,需要源码的留邮箱。
相关文章推荐
- 飞凌OK6410开发板(裸板) 第一个点亮LED灯程序
- OK6410学习之裸板LED程序及RAM烧录
- ARM嵌入式学习--OK6410裸板程序--2.GPIO控制LED跑马灯(从ARM汇编跳转到C语言)
- ARM嵌入式学习--OK6410裸板程序--1.GPIO控制LED
- 6410裸板程序,led、蜂鸣器、按键…
- micro2440第一个裸板程序led
- OK6410裸机程序 ----led
- ok6410 LED/GPIO 控制 C#程序
- 【OK6410裸机程序】点亮LED
- OK6410串口裸板程序uart0
- OK6410与Ubuntu 11.10 NFS配置与运行第一个程序
- ok6410-第05篇-Linux 下裸板程序的开发
- 一灯大师之点亮OK6410开发板上4个LED裸机程序---嵌入式回归第十篇
- OK6410用DNW下载led和ds18b20的裸机程序
- TQ2440第一个裸板程序led
- Ok6410裸板程序开发(1)-开发环境搭建
- RVDS4.0开发OK6410(一)RVDS4.0实现第一个流水灯程序
- OK6410 linux第一个字符型设备驱动:LED驱动
- ok6410-第06篇-裸机led程序
- OK6410裸板更新程序_update