@

总结自《嵌入式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 ~/.bashrcvi ~/.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目录下已经有了zImageuImagedtb文件,

并且有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”,可以发现有这个设备节点,并且它的主设备号跟上图一样:

14、程序更新

嵌入式Linux应用开发完全手册之环境搭建的更多相关文章

  1. 嵌入式linux应用开发完全手册学习笔记一

    2015.3.25星期三 晴 有两个星期没写学习日记了,找个时间把这段时间做的电子词典和ARM小项目总结一下. 下面的知识点总结,U-BOOT:参考PDF文档:嵌入式linux应用开发完全手册 当虚拟 ...

  2. 嵌入式Linux应用开发完全手册读书笔记——常用的命令

    嵌入式开发中常用的命令 grep命令 用法:grep [option] PATTERN [FILE...] 例如: 在内核目录下查找包含"request_irq"字样的文件 gre ...

  3. 嵌入式Linux应用开发完全手册读书笔记——交叉编译工具选项说明

    交叉编译工具选项说明 arm-linux-gcc 一个c/c++文件要变成可执行文件需要4步:预处理 -> 编译 -> 汇编 -> 链接: 在使用arm-linux-gcc时的常用选 ...

  4. 嵌入式Linux驱动开发日记

    嵌入式Linux驱动开发日记 主机硬件环境 开发机:虚拟机Ubuntu12.04 内存: 1G 硬盘:80GB 目标板硬件环境 CPU: SP5V210 (开发板:QT210) SDRAM: 512M ...

  5. 如何使用eclipse进行嵌入式Linux的开发

    如何使用eclipse进行嵌入式Linux的开发 作者:曾宏安,华清远见嵌入式学院高级讲师. 如何使用eclipse进行嵌入式Linux的开发 习惯了在windows环境下开发的程序员在转到Linux ...

  6. 驱动开发学习笔记. 0.06 嵌入式linux视频开发之预备知识

    驱动开发读书笔记. 0.06  嵌入式linux视频开发之预备知识 由于毕业设计选择了嵌入式linux视频开发相关的项目,于是找了相关的资料,下面是一下预备知识 UVC : UVC,全称为:USB v ...

  7. 手把手教你君正X2000开发板的OpenHarmony环境搭建

    摘要:本文主要介绍基于君正X2000开发板的OpenHarmony环境搭建以及简单介绍网络配置情况 本文分享自华为云社区<君正X2000开发板的OpenHarmony环境搭建>,作者: 星 ...

  8. iOS开发——实战OC篇&环境搭建之Xib(玩转UINavigationController与UITabBarController)

    iOS开发——实战OC篇&环境搭建之Xib(玩转UINavigationController与UITabBarController)   前面我们介绍了StoryBoard这个新技术,和纯技术 ...

  9. iOS开发——实战OC篇&环境搭建之纯代码(玩转UINavigationController与UITabBarController)

    iOS开发——实战OC篇&环境搭建之纯代码(玩转UINavigationController与UITabBarController)   这里我们就直接上实例: 一:新建一个项目singleV ...

随机推荐

  1. 【BZOJ2337】XOR和路径(高斯消元)

    题目链接 大意 给出\(N\)个点,\(M\)条边的一张图,其中每条边都有一个非负整数边权. 一个人从1号点出发,在与该点相连的边中等概率的选择一条游走,直到走到\(N\)号点. 问:将这条路径上的边 ...

  2. Python支付宝单笔转账接口

    开发信息 接口加签方式为证书模式 证书模式好处是可以使用支付宝的转账到支付宝账户,也就是提现功能,公钥模式不能实现转账到支付宝账户. 此DEMO利用单笔转账到支付宝账户接口[提现功能]用户可以通过此D ...

  3. tarjan2

    反过来调过去,我还是感觉没学明白缩点 讲一个有向图中的所有强连通分量缩成一个点后,构成的新图是一个DAG. 一个点所在的强连通分量一定被该点所在DFS搜索树所包含 树上的边大致分为:树枝边,前向边(从 ...

  4. 降维处理PCA

    要理解什么是降维,书上给出了一个很好但是有点抽象的例子. 说,看电视的时候屏幕上有成百上千万的像素点,那么其实每个画面都是一个上千万维度的数据:但是我们在观看的时候大脑自动把电视里面的场景放在我们所能 ...

  5. 搭建 Nginx 服务

    今日内容 上一篇测试 c出现问题 web 服务 部署 Nginx 内容详细 上一篇测试 NFS共享文件步骤 - 服务端 [root@backup ~]# yum install nfs-utils r ...

  6. 不用rustup,Windows下gnu版Rust安装与开发环境配置

    写在前面 本文介绍了在不使用rustup的情况下,在Windows上安装gnu版的Rust,并配置开发环境(VSCode + rust-analyzer,CLion + IntelliJ Rust)的 ...

  7. pytest--conftest.py用法(单独存放fixtrue配置的一个文件)

    1.conftest.py文件是什么 单独存放fixtrue配置的一个文件 用处是可以多个不同的pytest测试脚本共用一套fixture配置,代码维护方便 2.conftest.py使用注意事项 c ...

  8. IC应届生40万白菜价!从业多年的资深专家手把手指导你如何选择offer!

    这是IC男奋斗史的第1篇原创 关注公众号[IC男奋斗史],让我们一起撸起袖子加油干! 芯片行业2021年的秋招市场又是风起云涌.高手过招,继OPPO给应届生开出40万白菜价offer之后,平头哥又被爆 ...

  9. 古典密码之凯撒密码and换位密码

    凯撒密码: 密文:wuhdwb lpsrvvleoh 算法:Ci=E(pi)=(pi+3)mod 26 明文:TREATY IMPOSSIBLE 例如ABCD这四个字母要进行加密,如果我们设置它的偏移 ...

  10. 【C#基础概念】vs2019 代码段

    打开记事本,输入下面代码,然后把文件后缀改为.snippet .然后通过vs2019 工具>代码段管理导入. <?xml version="1.0" encoding= ...