嵌入式入门(第一节笔记)
一 嵌入式的大环境 (面试时可能的第一个问 作为开场以及考察对行业的了解 最好掌握二八原则 80%的话语主动权在自己这 展现自己的知识储备和沟通能力)
1,嵌入式开发与传统开发相比 解放了对开发者的能力要求 可以让应用软件层的编写者 无需全面详细地了解硬件的构造及一系列的原理 依然可以编写程序调用硬件实现功能 。
既 传统开发的耦合度高 嵌入式可以解耦合 让关系倒转 从而降低开发要求 提高效率。
2,从包含元素上说 传统开发包含两个元素: 硬件层的开发板 软件层的控制代码, 一旦硬件发生改变 软件需查看更改后的原图 根据硬件的结构来做出修改重新编写
而嵌入式开发 则在传统开发的两元素间添加了操作系统这一元素(操作系统其实是一种驱动软件) 好处是无需懂硬件原理也可编写软件控制硬件实现功能 提高开发效率。
3,就业前景 因为美国对中的制裁 迫使中国急需自主研发芯片来摆脱对国外的依赖 解除控制 一旦芯片的替换形成 自然而然 驱动软件需要做出相应的修改 操作系统需发生大变化 因此底层系统软件层的改变 又使得上层应用软件层做出改变 因此现阶段国内大环境急需一大批的嵌入式开发人员
4,但嵌入式开发也有着自身缺点 即开发成本的增加 以及开发时会占用大量的系统资源 让运行速度降低 增加功耗。
5,解决方法:开发专有的小型操作系统 裁剪不必要的功能。
嵌入式工程师学习线路
1,嵌入式linux安装与使用(命令)
2,嵌入式linux开发工具(gcc,gdb,make,git,shell)
3,嵌入式c开发
4,嵌入式linux c开发,文件io,多任务,网络,数据库
5,嵌入式c++开发(网络服务器,中间件)
6,GUI开发(QT)
7,嵌入式硬件基础(51,stm32)
8,嵌入式硬件开发(crotex-A)
9,嵌入式系统移植
10,嵌入式内核开发:(内存管理)
11,嵌入式底层驱动开发
12,嵌入式操作系统开发
注:1~6为上层+(人工智能)AI 7~12为底层
小知识:unix之父也是c语言之父。
linux为什么可以抢走nuix客源:
(虽然linux是免费的 unix是付费的 但是老用户用unix的话 转linux 软件需重新开发 所以还不如接着使用付费的nuix 实际节省了大量的开发费用)但是linux有其商业方法
1遵循posix标准,可移植操作系统接口,unix上适用的同样适用于linux
2GUN计划 GUN is not unix,linux上适用的不可再unix上执行
3 GPL协议 在开源社区做维护 提交贡献代码量 (即 使用了Linux并添加功能后 需上传改变后的代码
linux的构造分三层
最核心的内核 内核外的shell层 以及最外层的桌面软件
linux 的发行版制作商有
red hat Fedora的centos(个人版)
ubunto(分桌面desktop/服务器server/物联网版
国产 红旗linux已淘汰
注:使用linux时最好选(LTS)长期更新
那么学嵌入式开发就离不开linux环境 那么我们如何拥有它呢
1,双系统 但是内核容易崩溃且难修复
2,虚拟机 在虚拟机里安装运行linux
虚拟机的种类
vmware vituralpc(微软)
virturalbox 支持linux
注 vmware时商业软件 只支持windows
~~~~~~~~安装虚拟机时可能会遇到虚拟机无法运行要注意是否时电脑未开启虚拟化所引起的
小注 在linux里用命令控制比鼠标快 因为用鼠标还会对界面进行渲染 降低运行效率
二 部分常用linux 命令解释
su - jsetc 切换用户
su 为默认超级用户
sudo cp hello.c 以超级用户的权限对hello.c执行copy
clear 清除之前信息 但还可查看到
reset清楚之前信息且查看不到
adduser 添加用户
ps 查看当前进程
ps -a 查看所有进程 类似于windows任务管理器
kill 结束进程 (系统进程需kill -9 加上进程编号
sigkill 终止进程
ls (list file) 查看当前目录下的文件名
注意 在linux里 文件夹叫做目录
ls -l 每个文件的详细信息 (文件管理命令的linux一点哲学:一切皆为文件)
文件分类 普通文件 目录文件 设备文件 链接文件
普通文件 以-开头
目录文件 以 D开头
设备文件 以C(字符设备) B(块设备)
链接文件 以L开头
三小类文件 -s 共享 -f堆栈 -p管道 这三个为(交互临时文件)
rwxr-xr-x 其中前三 rwx为当前用户操作权限 为可读可写可执行
中间的r-x为与当前用户在同一组的权限为可读不可写可执行 最后的为其他用户r-x为可读不可写可执行
注意 rwx的权值 为 r 4 w 2 x 1
chmod为改文件权值 例 chmod 555 hello.c
chmod u+x hello.c(user加上了可执行权限)
chmod g-w hello.c(group减去了可写权限)
chmod o+r hello.c(other users加上了可读权限)
还可以写成 chmod u=r-x hello.c
touch 创建新文件 注意与mkdir区分(创建目录)
注意显示文件时 带有.的为隐藏文件
ctrl+c 当进程为无限循环时可以手动中止
cat 查看文件内容
cat -n 查看文件 并对文件从1开始编行
rm (remove) 删除文件
rm-f 强制删除文件
gedit 可创建没有文件 并编辑文件
gcc 编译文件 gcc编译器 编译成 a.out 文件
./a.out 运行文件
cd / 进入根目录 (所有文件在根目录下)
~ 如 ~# 代表当前用户的工作目录
.代表当前目录
bin 是系统中的命令目录
bin:
bin 是 Binaries (二进制文件) 的缩写, 这个目录存放着最经常使用的命令。
sbin:
s 就是 Super User 的意思,是 Superuser Binaries (超级用户的二进制文件) 的缩写,这里存放的是系统管理员使用的系统管理程序。
dev. 系统的设备文件
etc. 系统配置文件
lib. 系统运行库文件安装目录
root root用户工作目录
home 普通用户工作目录
usr. 第三方软件默认安装目录
proc sys mnt
mnt:
系统提供该目录是为了让用户临时挂载别的文件系统的,我们可以将光驱挂载在 /mnt/ 上,然后进入该目录就可以查看光驱里的内容了。
proc:
proc 是 Processes(进程) 的缩写,/proc 是一种伪文件系统(也即虚拟文件系统),存储的是当前内核运行状态的一系列特殊文件,这个目录是一个虚拟的目录,它是系统内存的映射,我们可以通过直接访问这个目录来获取系统信息。
sys:
这是 Linux2.6 内核的一个很大的变化。该目录下安装了 2.6 内核中新出现的一个文件系统 sysfs 。
sysfs 文件系统集成了下面3种文件系统的信息:针对进程信息的 proc 文件系统、针对设备的 devfs 文件系统以及针对伪终端的 devpts 文件系统。
该文件系统是内核设备树的一个直观反映。
当一个内核对象被创建的时候,对应的文件和目录也在内核对象子系统中被创建。
(以上文件后缀可出笔试题)
相对路径 不带根目录
绝对路径 带根目录 如 /home/1103 第一个/带表根目录
pwd 查看路径
cp 拷贝 cp hello.c kk 拷贝hello.c到kk目录
mv 剪切 也可重命名
mv hello.c demo 将hello.c重命名为demo
mv demo /1103 将demo文件移动到1103目录
rmdir 移除目录
rm -rf 删除目录及所有文件
file 查看文件属性
su 切换用户
if cogfig 查ip