《嵌入式Linux应用开发完全手册》之环境搭建总结
@
总结自《嵌入式Linux应用开发完全手册_韦东山全系列视频文档全集V2.4》
0、下载源配置
1、图形界面设置
Ubuntu 18.04 中提供了图形界面进行源的切换.不过需要注意软件源的设置不在 setting 中,而是有一个单独的 Software&Upadates 供设置,直接通过搜索栏搜索该程序即可.修
1.打开 Software&Updates -> Ubuntu Software,其界面有个 Download from 项.
2.点击 Download from 对应的下拉菜单,选择 other 选项,会出现根据不同的国家和地区所对应的源.找到 China 对应的项,其中即为中国国内的一些源,直接选择其中一个即可.还可以通过右侧的 Select Best Server 按钮测试当前环境下速度最快的源.
2、命令行设置:
备份原配置文件:
sudo cp /etc/apt/sources.list /etc/apt/sources.list.backup
编辑源列表文件,命令如下:
sudo gedit /etc/apt/sources.list
将原有的内容删除掉,添加以下内容(不能有除了以下内容的有效内容)
deb http://mirrors.aliyun.com/ubuntu/ bionic main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ bionic main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ bionic-security main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ bionic-security main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ bionic-updates main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ bionic-updates main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ bionic-backports main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ bionic-backports main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ bionic-proposed main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ bionic-proposed main restricted universe multiverse
更新软件列表
sudo apt-get update
更新软件包
sudo apt-get upgrade
关于sudo apt-get update与sudo apt-get upgrade有什么区别,推荐一篇博文,一看就懂:
https://blog.csdn.net/beckeyloveyou/article/details/51352426
1、电脑BIOS启动虚拟化
2、linux网卡查看与IP设置
查看所有网卡
ifconfig -a
设置网 IP
$ sudo ifconfig ens160 192.168.1.16
如果执行以下命令不成功,表示路由没设置好:
$ ping 8.8.8.8
connect: Network is unreachable
如果“ping 8.8.8.8”成功,但是“ping www.baidu.com”不成功,则是 DNS 没设置好:
$ ping www.baidu.com
ping: unknown host www.baidu.com
DNS 的设置比较简单,8.8.8.8 是好记好用的 DNS 服务器,修改 Ubuntu 中的/etc/resolv.conf 文件,内容如下:
nameserver 8.8.8.8
3、windows NAT虚拟网络配置
4、修改 Ubuntu 的 mountd 端口
在 NAT 网络下,要想开发板能通过 NFS 挂载 Ubuntu,需要修改 mountd 端口为 9999
如果你还不会用 vi 命令,可以在 Ubuntu 桌面启动终端,执行以下命令,用 GUI 工具修改:
sudo gedit /etc/services
命令解释:修改/etc/services:
添加 2 行:
mountd 9999/tcp
mountd 9999/udp
查看端口:
sudo rpcinfo -p
请参考如下图操作:
5、vim设置
1、配置
cd /etc/vim
cp vimrc ~/.vimrc
cd ~
gedit .vimrc
在.vimrc最后加入以下内容:
"关闭兼容内容
set nocompatible
"显示行号
set number
"backspace设置为两个空格
set backspace=2
"tab键设置为4个空格
set tabstop=4
"设置自动对齐为4个空格
set shiftwidth=4
"搜索时不区分大小写
set ignorecase
"搜索时高亮显示
set hlsearch
6、MobaXterm设置
安装、运行 MobaXterm,如下建立 Session:
注意:对于使用 NAT 的 Ubuntu,上图中步骤 2 里输入的 IP 是 127.0.0.1;如果不是使用 NAT,则需要输入 Ubuntu 的 IP。
7、FileZilla 设置
注意:对于使用 NAT 的 Ubuntu,上图中步骤 2 里输入的 IP 是 127.0.0.1;如果不是使用 NAT,则需要输入 Ubuntu 的 IP。
8、ubuntu交叉编译链设置与检查
永久生效
1、执行:gedit ~/.bashrc
或vi ~/.bashrc
2、在行尾添加或修改,加上下面几行:
export ARCH=arm
export CROSS_COMPILE=arm-buildroot-linux-gnueabihf-
export PATH=$PATH:/home/book/100ask_stm32mp157_pro-sdk/ToolChain/arm-buildroot-linux-gnueabihf_sdk-buildroot/bin
3、要执行 source ~/.bashrc
命令使其生效,这条命令是加载这些设置的环境变量。
4、如需对所有用户,永久修改:
sudo vi /etc/profile
加上
export PATH=$PATH:/usr/local/arm/gcc-linaro-4.9.4-2017.01-x86_64_arm-linux-gnueabihf/bin
5、 测试:重启ubuntu后,输入命令,显示gcc版本号就可以了
arm-linux-gnueabihf-gcc -v
9、ubuntu编译内核
STM32MP157 开发板内核的编译过程如下(编译内核前需要先配置好工具链等一些环境变量):
book@100ask:~/100ask_stm32mp157_pro-sdk$ cd Linux-5.4
book@100ask:~/100ask_stm32mp157_pro-sdk/Linux-5.4$ make 100ask_stm32mp157_pro_defconfig
book@100ask:~/100ask_stm32mp157_pro-sdk/Linux-5.4$ make uImage LOADADDR=0xC2000040 -j4
book@100ask:~/100ask_stm32mp157_pro-sdk/Linux-5.4$ make dtbs
book@100ask:~/100ask_stm32mp157_pro-sdk/Linux-5.4$ cp arch/arm/boot/uImage ~/nfs_rootfs
book@100ask:~/100ask_stm32mp157_pro-sdk/Linux-5.4$ cp arch/arm/boot/dts/100ask-stm32m1p157c-pro.dtb ~/nfs_rootfs
10、ubuntu编译内核模块
STM32MP157 开发板进入内核源码目录后,就可以编译内核模块了:
book@100ask:~$ cd 100ask_stm32mp157_pro-sdk/Linux-5.4
book@100ask:~/100ask_stm32mp157_pro-sdk/Linux-5.4$ make modules -j4
book@100ask:~/100ask_stm32mp157_pro-sdk/Linux-5.4$ sudo make INSTALL_MOD_PATH=/home/book/nfs_rootfs modules_install
最后一条命令是把模块安装到 /home/book/nfs_rootfs 目 录 下 备 用 , 会 得 到
/home/book/nfs_rootfs/lib/modules目录。
11、安装内核和模块到开发板上
假设:执行上述命令后,在Ubuntu的/home/book/nfs_rootfs目录下已经有了zImage或uImage、dtb文件,
并且有lib/modules子目录(里面含有各种模块)。
下面,要把这些文件复制到开发板上。
1、如果你使用的是VMware NAT方式,假设Windows IP为192.168.1.100,在开发板启动进入Linux后,输入
root登录,然后执行以下命令(注意:必须指定port为2049、mountport为9999):
mount -t nfs -o nolock,vers=3,port=2049,mountport=9999 192.168.1.100:/home/book/nfs_rootfs /mnt
cp /mnt/zImage /boot 或 cp /mnt/uImage /boot
cp /mnt/*.dtb /boot
cp /mnt/lib/modules /lib -rfd
sync
reboot
2、如果你使用的是VMware桥接方式,假设Ubuntu IP为192.168.1.100,在开发板上执行以下命令:
mount -t nfs -o nolock,vers=3 192.168.1.100:/home/book/nfs_rootfs /mnt
cp /mnt/zImage /boot 或 cp /mnt/uImage /boot
cp /mnt/*.dtb /boot
cp /mnt/lib/modules /lib -rfd
sync
reboot
最后重启开发板,它就使用新的zImage或uImage、dtb、模块了。
12、ubuntu修改 Makefile 指定内核目录
把第 1 个驱动程序 01_hello_drv 上传到 Ubuntu 后,修改它的 Makefile,设置其中的 KERN_DIR 变量为内核的源码目录,以 IMX6ULL 为例,如下:
KERN_DIR = /home/book/100ask_imx6ull-sdk/Linux-4.9.88
13、编译第一个驱动
1、设置好工具链、配置、编译过内核之后,在01_hello_drv目录下执行make命令即可编译驱动程序及测试程序,如下 :
2、拷贝到开发板后,安装驱动程序并验证是否成功:
[root@board:~]# insmod hello_drv.ko
执行“lsmod”可以看到hello_drv驱动,如下:
3、执行“cat /proc/devices”:查看设备名与设备号
执行“ls -l /dev/hello”,可以发现有这个设备节点,并且它的主设备号跟上图一样: