micro2440第一个裸板程序led

来源:互联网 发布:高速网络不稳定 编辑:程序博客网 时间:2024/04/30 18:47

开发环境:

系统:ubuntu 10.04.4

单板:micro2440

编译器:arm-linux-gcc-4.3.2

搭建开发环境详见ubuntu 10.04.4开发环境配置。

目标:实现micro2440单板上4个led灯闪烁

第一个程序很简单,用汇编实现。硬件如下:

nLED_1——>GPB5

nLED_2——>GPB6

nLED_3——>GPB7

nLED_4——>GPB8

根据s3c2440手册编写代码,包括2个文件1_led.s和Makefile.

文件·1_led.s:

.text.global _start_start:ldrr0,=0x56000010movr1,#0x00015400strr1,[r0]ldrr0,=0x56000014loop:movr1,#0x00000000strr1,[r0]bldelaymovr1,#0x00000ff0strr1,[r0]bldelaybloopdelay:movr4,#100del1:movr5,#1000del2:subr5,r5,#1nopcmpr5,#1bnedel2subr4,r4,#1nopcmpr4,#1bnedel1movpc,lr
文件Makefile:
1_led.bin:1_led.sarm-linux-gcc -g -c -o 1_led.o 1_led.sarm-linux-ld -Ttext 0x00000000 -g 1_led.o -o 1_led_elfarm-linux-objcopy -O binary -S 1_led_elf 1_led.binarm-linux-objdump -D 1_led_elf > 1_led.disclean:rm -f 1_led.bin *.o 1_led_elf 1_led.dis

 

change@change:~$ cd /home/change/Si/micro2440/1_led/

change@change:~/Si/micro2440/1_led$ make
arm-linux-gcc -g -c -o 1_led.o 1_led.s
arm-linux-ld -Ttext 0x00000000 -g 1_led.o -o 1_led_elf
arm-linux-objcopy -O binary -S 1_led_elf 1_led.bin
arm-linux-objdump -D 1_led_elf > 1_led.dis
change@change:~/Si/micro2440/1_led$ ls
1_led.bin  1_led.dis  1_led_elf  1_led.o  1_led.s  Makefile

烧写、测试:

很多人电脑都没有并口或者openjtag编程器,这里介绍直接用u-boot烧写。前提是单板已有u-boot并且支持网卡。

我用NOR Flash里的u-boot烧写程序到NAND Flash,过程如下:

单板NOR Flash启动上电:

U-Boot 2012.04.01 (Oct 25 2012 - 22:47:25)CPUID: 32440001FCLK:      400 MHzHCLK:      100 MHzPCLK:       50 MHzDRAM:  64 MiBWARNING: Caches not enabledFlash: 2 MiBNAND:  256 MiBIn:    serialOut:   serialErr:   serialNet:   dm9000Warning: dm9000 MAC addresses don't match:Address in SROM is         ff:ff:ff:ff:ff:ffAddress in environment is  00:0c:29:4d:e4:f4Hit any key to stop autoboot:  0 SMDK2410 # printenvbaudrate=115200bootargs=console=ttySAC0 root=/dev/mtdblock3bootcmd=nand read 30000000 kernel;bootm 30000000 bootdelay=5ethact=dm9000ethaddr=00:0c:29:4d:e4:f4gatewayip=172.16.1.1ipaddr=172.16.1.133mtddevname=u-bootmtddevnum=0mtdids=nand0=micro2440-0mtdparts=mtdparts=micro2440-0:256k(u-boot),128k(params),2M(kernel),-(rootfs)netmask=255.255.255.0partition=nand0,0serverip=172.16.1.135stderr=serialstdin=serialstdout=serialEnvironment size: 476/131068 bytesSMDK2410 # tftp 0x30000000 1_led.bindm9000 i/o: 0x20000000, id: 0x90000a46 DM9000: running in 16 bit modeMAC: 00:0c:29:4d:e4:f4could not establish linkUsing dm9000 deviceTFTP from server 172.16.1.135; our IP address is 172.16.1.133Filename '1_led.bin'.Load address: 0x30000000Loading: #doneBytes transferred = 96 (60 hex)SMDK2410 # nand erase 0 0x40000NAND erase: device 0 offset 0x0, size 0x40000Erasing at 0x20000 -- 100% complete.OKSMDK2410 # nand write 0x30000000 0 0x40000NAND write: device 0 offset 0x0, size 0x40000 262144 bytes written: OKSMDK2410 # 

注意printenv发现网卡参数不对,需要设置如下:

SMDK2410 # set ipaddr 172.16.1.133
SMDK2410 # set gatewayip 172.16.1.1
SMDK2410 # set serverip 172.16.1.135
SMDK2410 # save

接着单板断电,拨到NAND Flash启动,上电,4个LED灯就开始闪烁。

	
				
		
原创粉丝点击