嵌入式培训
达内IT学院
400-996-5531
第一部分 Linux的内核、发行版、桌面环境
Linux有两个版本的概念容易弄混,一个是内核版本,一个是发行版本。内核和发行版是各自独立的概念。
Linux内核有版本号,按照研发顺序从小到大排,但是有的软件或者库文件只能在某个特定版本的内核上进行开发,因此不一定版本号越高越好,有的时候还得换回低版本,为了跑通程序。
Linux的发行版本其实就是Linux核心再加上外围的实用程序组成的一个大软件包而已,由不同公司在进行研发,因此有不同的发行版,Ubuntu、centos、archlinux、debian、Redhat等等。
ubuntu的发行版也有版本号,14.04或16.06等等。发行版本号和内核版本号没有任何关系,比如ubuntu16.04,内核可以用4.4.0,也可以换成4.9.9等等,没有任何关系。
LInux发行版本内核更换的操作流程大致为:解压内核代码->交叉编译生成uImage文件->拷贝内核镜像uImage到开发板->完成,这里不再细讲。
Linux还有第三个东西——桌面环境。
初接触Linux,经常会认为Unity就是Ubuntu,因为ubuntu(发行版)自带Unity(桌面环境),但其实Ubuntu也可以换成gnome桌面环境。我们不能认为Unity就是ubuntu,Gnome就不是ubuntu。
Archlinux是轻量级的发行版,一般用在价廉性能差的设备上,桌面环境一般用轻量级的MATE。【注1】
桌面环境之间有什么差别呢,首先是外观,比如有的环境窗口关闭按钮在右上角,有的在左上角,其次是功能,比如有的桌面环境进行用户设置就考虑的面面俱到,有的就只有一些常用的功能,还有某些应用的功能,比如不同桌面环境文件管理器也是各有特点。
其实很多时候让我们感觉linux难用,可能不是linux发行版的问题,而是桌面环境的问题,需要适应啊,比如苹果OS X上的触摸板和流畅的切屏真是感受一级棒,但是用起鼠标来OS X就不如windows了,windows系统文件资源管理器感觉就比os x的finder好用的多。【注2】
【注1】你也可以向我一样不装桌面环境,为什么不安装呢?第一麻烦,第二我开发的程序可以不需要LCD显示;第三Qt可以从命令行就进入图形化窗口,不需要安装桌面环境,Qt4借助自带的qws实现,Qt5借助qpa,好像不使用。
这里挖一个坑吧,关于Qt交叉编译以及从命令行进入图形化窗口的内容希望有时间能做一做实验,写一篇教程。
【注2】【OS X Finder使用小知识】
command+option+space 打开finder
command+shift+h 找到home
command+T 新建标签页
command+1/2/3/4 切换成目录树显示
command+N 新建一个finder
command+up 返回上一级
这几个快捷键如果不知道,那mac上真的工作效率要大打折扣。
第二部分 Linux的常用sh指令
linux指令我并没有进行专门的学习,用一个查一个,这里列举几个我想起来的。
cd #进入目录
cd .. #返回上一级目录
ls #查看该目录下文件
ls | grep abc #查看名字中带abc的文件,|为管道,将第一个指令输出作为第二个输入
lsusb #查看插入的usb
ls /dev #查看设备
mkdir #创建文件夹
rm #删除文件
rm -r #删除文件夹
vi/vim #文本编辑
cat #查看文件内容
cmake .. #生成编译用的make文件,cmake项目在上一级目录中,所以用..
make #进行编译
make -j4 #开启多核编译(4核)
gcc #c编译
g++ #c++编译
wget #下载文件
git clone #通过git下载开源代码
sudo apt-get install#软件和库的安装
sudo apt-get update #所有软件和库的更新
sudo pip install #python程序安装
python #进入python编辑模式,可以拿来当计算器使
ln 文件名重定向,给文件起个别名
insmod 加载模块
lsmod 查询模块
最后,./xxx运行一个程序,ctrl+C强制退出
更改环境变量
vim etc/profile
source etc/profile
还有三种环境变量文件,各位自己看看文章找找区别
vim etc/bashrc
vim ~/.profile
vim ~/.bashrc
更改下载源
sudo vim /etc/apt/sources.list
改vim配置文件
sudo vim ~/.vimrc
linux底下查看相机属性
ffmpeg -f video4linux2 -i /dev/video0
查看线程
ps aux
备份整个系统到挂载的硬盘上
sudo cp -ax / '/media/ubuntu/ssd'
更改启动设备文件
sudo vim /boot/extlinux/extlinux.conf
Jetson TX2开发板上的,全性能工作模式
sudo nvpmodel -m 0
第三部分 ARM开发板上电之后发生了哪些事
ARM开发板上电之后的启动过程:首先是启动UBoot,然后UBoot启动Linux内核。
当开发板一上电的时候,Nand Flash(或硬盘、SD卡,指定的启动设备)控制器会自动的把Nand Flash上的前4K数据(UBoot程序的最前面4k)搬移到CPU的内部RAM中(SRAM),这个内部RAM我们通常称作stepping stone,同时把这段片内SRAM映射到nGCS0片选的空间(即0x00000000),CPU从内部RAM的0x00000000位置开始启动,这个过程不需要程序干涉的。然后CPU从stepping stone的第一条指令开始执行。
为什么用UBoot呢?Linux内核是不能开机自动完全从零开始启动的,需要UBoot帮忙。UBoot要启动内核,分为2个步骤:第一步是将内核镜像从启动介质中加载到(重定位到)DDR中,第二步是去DDR中启动内核镜像。(内核代码根本就没考虑重定位,因为内核知道有bootloader帮忙把自己加载到DDR中链接地址处,内核就直接从链接地址处运行的)
【参考文章】
http://blog.csdn.net/lee244868149/article/details/49681987
#/yr-linux/p/5495734.html
第四部分 解释一个术语SDK
SDK,就是软件开发包。比如交叉编译,交叉编译需要很多编译器、调试器之类的一堆小工具,又或者做深度学习,需要CUDA、tensorRT、opencv之类的一堆库和软件,这里的问题就在于为了我们的目的要挨个寻找工具并安装,我们在装工具上浪费了太多时间,这时一个SDK就解决了这个问题,一个SDK集合了所有工具,一次性装完这些工具。
有点类似于ANSYS,比如ansys就可以看成一个有限元分析kit,里面的mechanical力学分析,ls-dyna碰撞问题,icem-cfd画网格,fluent流体力学,cfx流体力学,aqwa船舶类问题,cfd-post流体后处理其实是各自独立的,如果挨个自己找来装太费事,一次性装一个ANSYS包就把它们全装好,当然装的时候可以有所取舍。
【注】kit是套装,SDK的K就是kit,比如买手机,盒子里送一套usb线、充电器、取卡针、贴膜可以称为一套device kit。
本文内容转载自网络,本着传播与分享的原则,来源/作者信息已在文章顶部表明,版权归原作者所有,如有侵权请联系我们进行删除!
填写下面表单即可预约申请免费试听!怕钱不够?可就业挣钱后再付学费! 怕学不会?助教全程陪读,随时解惑!担心就业?一地学习,可全国推荐就业!
Copyright © 京ICP备08000853号-56 京公网安备 11010802029508号 达内时代科技集团有限公司 版权所有
Tedu.cn All Rights Reserved