EasyARM-i.MX287A Linux嵌入式编程 HelloWorld

时间:2019年1月22日

单位需要在EasyARM-i.MX287A开发板上做嵌入式开发,这块板子现在已经极其廉价,而且参考资料多又全,是入门不错的选择。之前没有接触过硬件编程相关的技术,参考了很多前辈的经验,实现了Arm开发板上运行Hello World,此文记录主要的实现过程。

Arm开发现有WinCE和Linux两个平台,WinCE符合大多数用户使用Windows系统的习惯,Linux系统开发好像更为主流,技术交流也更多,本文用最简单的方法实现Arm Helloworld程序。

基本流程:

Arm的操作系统不同于我们桌面版的Linux,无法直接执行gcc编译出的可执行文件,需要一个Linux操作系统计算机作为宿主机,使用Arm专用的编译器编译成Arm的可执行文件,放到Arm中运行,所以本文记录以下过程:

  • arm-linux-gcc 安装
  • MX287A上电
  • MX287A与宿主机串口通信
  • 编译程序

1、arm-linux-gcc 安装

参考:https://www.aliyun.com/jiaocheng/135386.html

  • 首先下载arm-linux-gcc-4.4.3.tar.gz安装包,安装包地址:

http://www.cr173.com/soft/42654.html

  • 解压安装包:

sudo tar -zxvf arm-linux-gcc-4.4.3.tar.gz

  • 在/usr/local目录下新建arm目录,并拷贝解压的文件到该目录:

cd /usr/local

sudo mkdir arm

sudo chmod 777 arm

sudo cp -r ~/download/arm-linux-gcc-4.4.3 /usr/local/arm

  • 修改环境变量,把arm-linux-gcc添加到PATH中:

sudo gedit ~/.bashrc

在文件末尾加上
export PATH=$PATH:/usr/local/arm/arm-linux-gcc-4.4.3/bin

执行 source .bashrc 使更改生效

  • 测试是否安装成功

arm-linux-gcc -v

输出:

Using built-in specs.
Target: arm-none-linux-gnueabi
Configured with: /opt/FriendlyARM/mini2440/build-toolschain/working/src/gcc-4.4.3/configure --build=i386-build_redhat-linux-gnu --host=i386-build_redhat-linux-gnu --target=arm-none-linux-gnueabi --prefix=/opt/FriendlyARM/toolschain/4.4.3 --with-sysroot=/opt/FriendlyARM/toolschain/4.4.3/arm-none-linux-gnueabi//sys-root --enable-languages=c,c++ --disable-multilib --with-arch=armv4t --with-cpu=arm920t --with-tune=arm920t --with-float=soft --with-pkgversion=ctng-1.6.1 --disable-sjlj-exceptions --enable-__cxa_atexit --with-gmp=/opt/FriendlyARM/toolschain/4.4.3 --with-mpfr=/opt/FriendlyARM/toolschain/4.4.3 --with-ppl=/opt/FriendlyARM/toolschain/4.4.3 --with-cloog=/opt/FriendlyARM/toolschain/4.4.3 --with-mpc=/opt/FriendlyARM/toolschain/4.4.3 --with-local-prefix=/opt/FriendlyARM/toolschain/4.4.3/arm-none-linux-gnueabi//sys-root --disable-nls --enable-threads=posix --enable-symvers=gnu --enable-c99 --enable-long-long --enable-target-optspace
Thread model: posix
gcc version 4.4.3 (ctng-1.6.1)
即为安装成功。

若出现

error while loading shared libraries: libstdc++.so.6: cannot open shared object file: No such file or directory 说明当前64位机器缺少32位的库,直接安装:

apt-get install lib32stdc++6

报错 error while loading shared libraries: libz.so.1

  1. sudo apt-get update

  2. sudo apt-get install lib32ncurses5 lib32z1

     

2、MX287A上电

首先组装液晶屏和主板;

短接看门狗WDG;

通入5v电源(一般手机充电器即可)即自动开机;

开机自带Linux系统,界面可以触摸。

 

3、MX287A与宿主机串口通信

开发套件有调试串口,可用于与宿主机通信:

TTL 调试串口

但是该串口输入输出为TTL电平,需要将这四个端口用杜邦线与TTL转RS-232电平的模块相连接,转换成RS-232电平接口才能与计算机接口正常通信。

RS232-TTL 模块

串口编程相关的信息我在另一篇博客中有记录:https://blog.youkuaiyun.com/zywvvd/article/details/86536398

连接完毕后将电脑端的串口插在转换模块上。

在电脑端安装minicom

sudo apt-get install minicom

minicom 安装完成后,需要经过配置才能使用。在终端输入下面命令进入 minicom 的配置界面:

sudo minicom –s

minicom 配置的主菜单

选中“Serial prot setup”菜单项,按A设置串口设备,将该字符串改为你计算机用来通信的串口设备文件名称(如我的为:ttyUSB0),其他设置为:“115200 8N1 ”( 115200 波特率、 8 位数据位、无奇偶校验、 1 位停止位)。硬、软件流控制请选择 No。

这时按“Enter”键返回 minicom 的配置主菜单。然后选中 Save setup as dfl 菜单项。

退出后执行:

sudo minicom -c on

此时再次对Arm加电开机,minicom界面会显示开发板的启动信息,随后登陆开发板,用户名和密码都是root,此时已经完成计算机与开发板的串口通信。

4、编译程序

简单的Hello World 程序:

#include <stdio.h>
#include <stdlib.h>

int main()
{
	printf("Hello World!\n");
	return 0;
}

arm-linux-gcc Hello.c -o Hello.out -std=c99

将Hello.out文件用u盘复制到Arm中,./ 即可运行。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值