嵌入式Linux入门及开发环境搭建
本文最后更新于136 天前,其中的信息可能已经过时,如有错误请发送邮件到y.wt@foxmail.com

嵌入式Linux运行在ARM架构的开发板上,并不能兼容为X86架构定制的Linux软件程序,我们需要搭建X86架构的Linux平台,通过交叉编译的方式为ARM平台重新编译程序源码,再将编译的程序或镜像文件移植到开发板上。

程序源码的编辑与编译都将在X86架构的Linux平台(在此为Ubuntu)上完成

Linux-C语言编程

编辑器

Vim

Ubuntu下安装:

sudo apt-get install vim

编译器

GCC编译器

Ubuntu下安装

sudo apt-get install gcc

GCC常用命令

将test.c预处理、汇编、编译并链接形成可执行文件test。-o选项用来指定输出文件的文件名。

gcc test.c -o test

运行可执行文件

./test

C语言的编译过程:

预处理:去掉注释,进行宏替换(#define相关),头文件(#include)包含等工作。

gcc–E test.c –o test.i

编译:不同平台用的汇编语言是不一样的。编译将高级语言编译成汇编语言

gcc–Stest.c –o test.s

汇编:将汇编语言翻译成二进制的目标代码

gcc–c test.c –o test.o

链接:包含各函数库的入口,得到可执行代码

gcc –o test test.c

Makefile

Makefile规则

  •  1.如果这个工程没有编译过,那么我们的所有C文件都要编译并被链接。
  •  2.如果这个工程的某几个C文件被修改,那么我们只编译被修改的C文件,并链接目标程序。
  • 3.如果这个工程的头文件改变,那么只需要编译引用了这几个头文件的C文件,并链接目标程序。

Makefile语法

Makefile函数

软件工具

交叉编译工具链

通过X86架构的PC为ARM架构的平台编译代码的GCC,使用方法与GCC相同,只是需要加上一个前缀

arm-linux-gnueabihf-gcc hello.c -o hello

MobaXterm

终端控制台,支持串口、SSH登录、文件传输,功能强大,免费

VScode

用于在Linux中编辑源码,阅读Linux内核等

嵌入式Linux开发分类

裸机开发

  • 与底层寄存器打交道,并不常用

驱动开发

  • 字符设备驱动
  • 块设备驱动
  • 网络设备驱动

应用编程

嵌入式Qt

正点原子I.MX6ULL出厂系统上手试玩

设置LCD作为终端控制台

1、修改 /etc/inittab 文件

进入开发板根文件系统中的 /etc/inittab 文件,官方教程中只需要加入一行:

tty1::askfirst:-/bin/sh

但是yocto系统要改三行:

console::askfirst:-/bin/sh
tty1::askfirst:-/bin/sh
::restart:/sbin/init

2、关闭出厂系统Qt界面

  • 在/usr/bin 删除psplash 和 psplash-write 文件
rm /usr/bin psplash
rm /usr/bin psplash-write
  • 在/etc/rc.local 那里屏蔽出厂Qt桌面

在出厂文件系统/etc/rc.local 文件里,如下图。不需要启动 Qt 界面,可以在/opt/QDesktop >

/dev/null 2>&1 &行首前面加“#”注释掉这个指令即可。想要开启时再去除“#”即可。

保存,重启开发板,按任意按键进入uboot

3、设置 uboot 中的 bootargs

进入uboot命令行,输入以下内容:

在LCD和串口同时显示终端

setenv bootargs 'console=tty1 console=ttymxc0,115200 root=/dev/mmcblk1p2 rootwait rw'
saveenv

uboot命令行中输入boot,启动Linux内核,LCD已经设置为终端控制台

Nginx轻量级Web服务器

出厂系统自带的轻量Web服务器,软件版本1.8.1

Nginx默认目录,输入命令:

whereis nginx

即可看到类似于如下的内容:

nginx: /usr/sbin/nginx /etc/nginx
  • Nginx配置路径:/etc/nginx/
  • 只需知道Nginx配置路径,其他路径均可在/etc/nginx/nginx.conf 以及/etc/nginx/conf.d/default.conf 中查询到。

常用命令

启动:

nginx

测试Nginx配置是否正确:

nginx -t

优雅重启:

nginx -s reload

查看nginx的进程号:

ps -ef |grep nginx

nginx服务停止

nginx -s stop
kill -9 pid 杀死进程

静态网页搭建

从配置文件 nginx.conf 中找到静态HTML文件的路径 ,文件名为:index.html

编辑 index.html文件

vim index.html

重启

nginx -s reload

连接WIFI

为测试 USB WIFI 正点原子已经编写了一个脚本“alientek_usb_wifi_setup.sh”脚本内容仅

供参考,默认把它放在/home/root/shell/wifi 目录下。如下图。

cd /home/root/shell/wifi

查看 USB WIFI 的网卡信息,使用 ifconfig 指令,如下图示,wlan0 是 USB WIFI 的节点。

ifconfig wlan0 up // 若默认没打开 wlan0 则需要执行此项。
ifconfig

使用 USB WIFI 连接无线网络并测试网络是否能上网。

iwlist wlan0 scan  //或者
wpa_cli -i wlan0 scan_result
source ./alientek_usb_wifi_setup.sh -m station -i ALIENTEK-YF -p 1590202**** -d wlan0

参数解释:
-m station :设置成 station 模式
-i ALIENTEK-YF :无线网络名称(ssid)。
-p 1590202**** :无线网络密码(psk)。
-d wlan0 :USB WIFI 节点

文章作者:Walter
暂无评论

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇