今天整了下基于JZ2440 V3板的裸机汇编闪灯程序。
我使用的环境是WIN10+VIRTUALBOX+UBUNTU。交叉编译器版本,5.4.0
然后,使用gedit新建一个.s文件,输入以下代码
.text
.global _start
_start:
LDR R0,=0X53000000
LDR R1,=0
STR R1,[R0] @CLOSE WDT FIRST!
LDR R0,=0X53000000
LDR R1,=0
STR R1,[R0] @CLOSE WDT FIRST!
LDR R0,=0X56000050
LDR R1,=(0x01<<(2*4))|(0x01<<(2*5))|(0x01<<(2*6))
STR R1,[R0] @GPFCON,OUT
LDR R1,=(0x01<<(2*4))|(0x01<<(2*5))|(0x01<<(2*6))
STR R1,[R0] @GPFCON,OUT
LOOP:
LDR R0,=0X56000054
LDR R1,=0
STR R1,[R0] @GPFDAT,ZERO
BL DELAY
LDR R0,=0X56000054
LDR R1,=0
STR R1,[R0] @GPFDAT,ZERO
BL DELAY
LDR R0,=0X56000054
LDR R1,=0X00000070
STR R1,[R0] @GPFDAT,ONE
LDR R1,=0X00000070
STR R1,[R0] @GPFDAT,ONE
BL DELAY
BL LOOP
DELAY:
LDR R0,=100000
X: SUBS R0,R0,#1
CMP R0,#0
BNE X
MOV PC,LR
LDR R0,=100000
X: SUBS R0,R0,#1
CMP R0,#0
BNE X
MOV PC,LR
然后,使用交叉编译器编译它,每次手动输入的命令又长。我仿写了一个MAKEFILE,实现半自动化编译。然后输出bin文件。再把它复制(这个复制过程可以使用脚本!!!)到共享文件夹下,WINDOWS下也可以看到这个文件了。在WINDOWS下运行OFLASH程序。实现将将文件写入到NAND FLASH 0地址之后的空间。
为了简化烧录过程,我写了一个烧录配置文件。
# 说明:"#"号开头表示注释
# 每个配置占一行,每行有6个参数,分别表示:JTAG类型、CPU类型、Flash类型、读写类型、偏移地址、文件
# 可以在配置文件里写多个配置用来把不同的文件写到不同的Flash、不同的偏移地址去
# jtag(0:openjtag, 1:dongle并口, 2:wiggler并口) cpu(0:s3c2410, 1:s3c2440, 2: s3c6410) flash(0:nand, 1:nor) read/write(0:write, 1:read) offset file
0 1 0 0 0 led_on.bin
# 每个配置占一行,每行有6个参数,分别表示:JTAG类型、CPU类型、Flash类型、读写类型、偏移地址、文件
# 可以在配置文件里写多个配置用来把不同的文件写到不同的Flash、不同的偏移地址去
# jtag(0:openjtag, 1:dongle并口, 2:wiggler并口) cpu(0:s3c2410, 1:s3c2440, 2: s3c6410) flash(0:nand, 1:nor) read/write(0:write, 1:read) offset file
0 1 0 0 0 led_on.bin
然后,我发现还是需要使用cmd命令一步一步进入到目标文件夹下,这个太烦了,写个简单的BAT文件,让它自己处理去。
使用记事本新建一个文本文件,输入
echo on
oflash -f led_on.txt
oflash -f led_on.txt
另存为 "所有文件",加上文件类型,.bat。
当更新了BIN文件后,我只需要点击这个批处理文件就可以实现一键烧程序了。
问题:
1.能否在UBUNTU下直接使用OFLASH,烧录程序?
2.能不能实现自动监测共享文件夹下的BIN文件的更新,而自动启动烧录?