开发板:FriendlyARM Micro2440标准版
S3C2440是基于ARM9内核的,包含MMU(内存管理单元),支持运行Linux操作系统。
首先列出参考资料:韦东山老师的《嵌入式Linux应用开发完全手册》。
本文对环境的搭建不多赘述(按照韦东山老师的书来),重点提出作者遇到的问题以及解决办法,希望可以帮助到遇到类似问题的朋友。
遇到的问题:交叉编译工具arm-linux-gcc无法使用
原因:随书附赠光盘中的arm-linux-gcc可执行程序是32位,而作者安装的Ubuntu19.04是64位的。
解决办法:$ sudo apt install gcc-multilib,安装32位的兼容包。还需要注意在使用apt命令之前需要修改/etc/apt/sources.list文件,选择合适的软件包镜像源(推荐阿里云,网址:https://developer.aliyun.com/mirror/ubuntu)。
Mini2440用户手册(Micro2440标准版的硬件资源与Mini2440完全一致):
S3C2440英文手册 第9章IO/PORTS部分:
汇编代码:
@******************************************************************************
@ File:led_on.S
@ Target:turn on LED1 and LED3, turn off LED2 and LED4
@******************************************************************************
.text
.global _start
_start:
LDR R0,=0x56000010
MOV R1,#0x00026400
STR R1,[R0] //向GPBCON寄存器写入数据0x00026400
//表示设置GPB5~GPB8均为输出模式
LDR R0,=0x56000014
MOV R1,#0x00000140
STR R1,[R0] //向GPBDAT寄存器写入数据0x00000140
//表示设置GPB5输出0、GPB6输出1、GPB7输出0、GPB8输出1
MAIN_LOOP:
B MAIN_LOOP
编写makefile文件,使用$ make命令编译,得到bin文件,再通过TFTP传送至Windows主机。在Windows下使用J-Flash软件通过JTAG(J-Link,需要事先安装驱动)连接开发板并烧录至NOR FLAH中(开发板需要选择从NOR FLAH启动)。
注意:使用J-Flash软件烧录需要在Options——>Project settings中正确配置CPU和FLAH的相关参数。
测试效果:LED1至LED4被间隔点亮。