linux+arm中怎样把文件放到mini2440开发板中,最简单的ARM裸机程序,帮你理解程序的运行启动(mini2440开发板) - TQW432......
发布日期:2021-06-24 15:07:03 浏览次数:2 分类:技术文章

本文共 2004 字,大约阅读时间需要 6 分钟。

//菜鸟学嵌入式.

//这一个真正的全裸代码。具体原理是这样的:

//首先是设置到NAND Flash 启动。当ARM 上电后,会自动读取NAND Flash

// 0x0000000地址处执行代码。我们将代码编译联接地址也设为0x0000000

//然后,用Jflash 烧写时,烧写到NAND Flash的0x0000000。那么上电后就会

//执行你的代码。

1:交叉环境的建立

按照 mini2440用户手册,175页成功设置好 .

2:连上开发板与PC上的JTAG线.开发板接上电源,

设置从NAND FLASH启动.(一定要确定是NAND FLASH启动)

否则烧写的时候不成功。

开启开发板电源.

3:编译 led_on.S

@******************************************************************************

@ File:led_on.S           (引用:嵌入式linux应用开发完全手册 韦东山 编著。)我做了一点改动。

@ 功能:LED点灯程序,点亮LED

@ mini2440 的LED口是 GPB5,GPB6,GPB7,GPB8.给它们送[低电平,则点亮 ][高电平,则点灭].

@ 它的配置地址是:0x56000010 我们将向这个地址中写入值,将GPB5/6/7/8 这四个引脚设为输出口,

@ 它的数据地址是:0x56000014 我们向这里面送相应的值就会相应的点亮相应的灯。

@ 比如送0x00000060 --> bit8,bit7 为低电平,bit6,bit5 是高电平.因此led4,3亮,led2,1灭。

@******************************************************************************

.text

.global _start

_start:

LDR     R0,=0x56000010      @ R0设为GPBCON寄存器。此寄存器

@ 用于选择端口B各引脚的功能:

@ 是输出、是输入、还是其他

MOV     R1,#0x00015400      @ 设置GPB5,GPB6,GPB7,GPB8,为输出口  #表示后面的是立即数,0x表示是十六进制数。

STR     R1,[R0]             @ 将R1中的值,送到地z址:0x56000010中

LDR     R0,=0x56000014      @ R0设为GPBDAT寄存器。此寄存器

@ 用于读/写端口B各引脚的数据

MOV     R1,#0x00000060      @ 此值改为0x00000020,

@ 可让LED1熄灭

STR     R1,[R0]             @ GPB5输出0,LED1点亮

MAIN_LOOP:

B       MAIN_LOOP

4:下面是Makefile文件内容。将它放在与led_on.S同一个文件夹下。

其中  arm-linux-ld -Ttext 0x0000000 -g led_on.o -o led_on_elf  这一句的意思是连接到0x0000000地址。

当你下载的时候,就是下载到nandflash中0x0000000处运行。(不知这样理解是否准确)

这一句:arm-linux-objcopy -O binary -S led_on_elf led_on.bin 将elf格式文件,变成.bin文件,这个.bin

的二进制文件,是可以在mini2440开发板上运行的。

led_on.bin : led_on.S

arm-linux-gcc -g -c -o led_on.o led_on.S

arm-linux-ld -Ttext 0x0000000 -g led_on.o -o led_on_elf

arm-linux-objcopy -O binary -S led_on_elf led_on.bin

clean:

rm -f   led_on.bin led_on_elf *.o

5:注意。led_on.S 的后缀是一个大写的S,而不是小写的s.

进入刚才,你保存文件的文件夹之后。

执行make.

make后会生成一个 led_on.bin文件。

6:将光盘里jflash2440.tgz解压.会生成一个Jflash文件夹

将刚才的led_on.bin文件复制到 Jflash

执行如下语句:     ./Jflash-s3c2440 led_on.bin /t=5 /d=0

出现第一个提示时输入:5 --表示烧写的flash类型是 64M的k9s1208

出现第二个提示时输入: 0 --表示从第k9s1208 program

出现第三个提示时输入: 0 --表示从第0块烧写。然后就是烧写的过程.

再出现提示时输入    : 2 --表示退出烧写。

7:关掉开发板的电源,再开启电源。你发现灯亮了。

转载地址:https://blog.csdn.net/weixin_33554514/article/details/116911343 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!

上一篇:linux cat 颜色,`cat`可以使用颜色代码标记显示文件吗?
下一篇:linux last reboot ip,Linux Last 命令关于 reboot 记录的含义说明

发表评论

最新留言

不错!
[***.144.177.141]2024年04月01日 17时25分26秒