苏嵌实训——day1

简介: 苏嵌实训——day1

一、概述


安排


1.嵌入式Linux操作的使用(嵌入式?Linux命令)

2.嵌入式Linux开发工具(gcc、gdb、make、shell、cmake、git)重要在C语言基础

3.嵌入式C语言开发(1w+;多练;接受快慢无所谓;侧重实战;笔试题,目标:全部通过)

4.嵌入式Linux C系统编程(最重要最难:操作系统原理,文件、进程、线程、网络原理、网络编程、数据库)

5.嵌入式数据结构(栈、队列、链表、树、排序、图)

6.嵌入式C++开发(面向对象的思想、C++11、14、17、20,设计模式,很难,但是大公司都需要,大厂瞄准C++工程师)

7.嵌入式GUI(Qt)

8.嵌入式硬件开发(51、stm32,cortex-A7/A9) 三个芯片

9.嵌入式系统移植(u-boot、内核、文件系统)

10.嵌入式底层设备驱动开发(字符设备、框架、网络设备)

11.嵌入式操作系统开发

12.嵌入式前沿技术(嵌入式人工智能)

13.嵌入式IC开发(fpga)

保底,做完4个项目


时间安排:


1.12-1.26:1,2,3


2.10-3.15:3,4,5项目


4-6:双休+晚上6,7项目


7-8: 8,9,10项目


9-10:12,13项目


学习要求:

1.认真听课,记录自己的重点知识,最终形成自己的知识体系

2.讲练结合,要多敲代码,给时间一定要写

3.有问题,一定要问,可以打断,不要累积自己的知识盲区


学习成果


知识积累

能力提升(项目,介绍自己的能力)


二、Linux


一、什么是嵌入式

以计算机应用为核心,软硬件可裁减的专用计算机系统,对功耗,体积,成本,可靠性有要求的系统

unix:

linux:安卓,deepin,centos,ubuntu

windows:

0a2653c851af460fa595bd959398a8f1.png


三、linux的系统的层次


应用层

APP,makefile,命令,脚本

内核层

内核层的五大功能:

文件管理:通过文件系统对文件组织管理

内存管理:内存的申请和释放工作

网络管理:通过网络协议进行网络数据包的收发

进程管理:程序的一次执行过程,程序的创建,销毁,调度等(多任务 == 多进程)

设备管理:设备驱动的管理

硬件层

LED,Camera,触摸屏,网卡,硬盘等


linux系统:分时,多任务,多用户的操作系统

2d65d23f6d4748949b924e4057485923.png

cpu:

L1CATCH:1700GB/s

L2CATCH:200GB/s

内存:

ddr3:内存大概10GB/s

ddr4:内存大概60GB/s

硬盘:机械硬盘(HDD):100MS/s

固态硬盘SATA(SSD):450MS/s

nvme(SSD):2000MS/s


四、linux目录结构


ctrl + shift + '+/-'调节字体大小

bin:存储一些可执行的二进制的命令

dev:设备目录

etc:存储linux操作系统的环境变量

mnt:挂载目录

sbin:超级二进制文件

home:家目录(用户目录)

root:存放管理员的一些配置文件

lib:存放支持linux操作系统运行的lib库


五、命令行提示符的介绍


jsetc          @         linux   :       /dev                 $
   |               |            |                   |                    |
用户名   分隔符    主机名   当前所在的路径    权限
$普通用户
#管理员权限
~:用户目录的路径 (/home/jsetc)


六、linux的基本命令


-:后面一半跟属性

*:所有


6.1 ls命令


ls:显示当前所有的目录和文件

ls -a:显示所有的隐藏目录和文件

ls -l:显示当前目录和文件的所有属性

ls -al:(ll)显示所有隐藏文件或者目录的属性


6.2 chmod命令


chmod:修改文件或者目录的权限

用法:chmod 权限 目录/文件

举例:chmod 775 jsetc


d   rwx    rwx    r-x      6    jsetc   jsetc     4096  1月  10 15:47 jsetc/
|    |      |      |       
|    |      |      |
|    |      |      |
|    |      |      |
|    |      |      |
|    |      |      |
|    |      |      |
|    |      |      |
|    |      |      |
|    |      |      |
|    |      |   其它用户
|    |    同组用户的其它用户
|  当前用户
文件的属性
chmod:修改文件或者目录的权限
用法:chmod 权限 目录/文件
举例:chmod 775 jsetc
u:usr 当前用户权限
g:group 同组用户其他用户权限
o:other:其它用户权限
a:all:所有用户
chmod o+x 文件名  //给其它用户加上可执行权限
文件的属性:
bsp-lcd
b:块设备文件
s:套接字文件
p:管道文件
-:普通文件
l:软链接文件
c:字符设备
d:目录文件


Linux文件属性详解


6.3 cd 命令


cd:(change dir)

cd 路径 // 进入指定的目录

路径:

绝对路径:从根目录开始的路径

相对路径:从当前目录开始的路径(逻辑路径)

. :当前路径

.. :上一级路径

../..:上一级路径的上一级路径


6.4 pwd 命令


显示当前用户所在的路径(绝对路径)


6.5 mkdir 命令


mkdir:(make dir):创建目录
用法:mkdir 目录名
    mkdir  目录1 目录2
    -p:递归创建多级目录


6.6 sudo命令


含义:以管理员权限运行


6.7 touch命令


功能:创建文件

touch:文件名


6.8 rm命令


功能:删除文件或者目录

rm -r :递归强制删除


6.9 cp命令


功能:复制文件或者目录

用法:cp 源路径 目的路径

cp 源路径 目的路径 -r //复制的是一个目录


6.10 mv命令


功能:移动一个文件或者目录(重命名,剪切)

用法: mv 原路径 目的路径


6.11 cat命令


功能:查看文件中的内容

用法:cat文件

cat -n 文件名 //显示行号


6.12 su命令


功能:切换用户

sudo su 用户名

举例: 普通用户—>管理员 sudo su root

管理员 ---->普通用户 su jsetc


6.13 clear命令


功能:清屏(快捷键ctrl + l)


6.14 tab按键补齐


6.15 find 文件查找


find 路径(默认当前路径) -name


七、vim编辑器


vim编译器的三种模式


命令行模式:按ESC

yy:赋值

p:粘贴

nyy:复制n行

u:撤销

dd:剪切

ndd:剪切n行

gg:跳转到首行

G:跳转到尾行

ngg:跳转到n行

shift + zz(或者ZZ):跳出并保存

插入模式:在命令行模式下,按 i 进入插入模式

底行模式:在命令行模式下,输入:shift + :

w:保存

q: 退出

wq:保存并推出

q!:不保存退出

set nu:显示行号

set nonu:隐藏行号

vsp 文件名 :左右分屏

sp 文件名:上下分屏


八、gcc编译器


下载命令: sudo apt-get install gcc

编译第一个代码:

gcc hello.c -o hello //-o:更改可执行文件名


8.1 gcc编译过程


预处理(-E):头文件的展开,宏的替换,条件编译等


gcc -E hello.c -o hello.i

编译:(-S):进行语法检查,如果代码有语法错误,会报错,编译结束,生成汇编文件


gcc -S hello.i -o hello.s


汇编(-c):将汇编文件转换成二进制文件,还没有链接到库,不可执行


gcc -c hello.s -o hello.o


链接:将所有的.o文件链接生成可执行文件


gcc hello.o -o hello


九、安装软件


(1)ubuntu deb

(2)redhat rpm


sl      _     3.03 -   17        build2_amd64    .deb
|              |       |              |
软件名       主版本   修订版本      架构(64位)


离线安装:dpkg:在安装软件的时候,如果有依赖,这些依赖程序不会被安装


sudo dpkg -i 软件包名    //安装软件
在终端上输入软件的名字    //执行软件
sudo dpkg -r 软件名     //卸载软件(会保留配置文件)
sudo dpkg -P 软件名     //完全卸载 
sudo dpkg -l 软件名      //查看软件的安装状态
sudo dpkg -L 软件名    //列举这个软件相关的所有路径
sudo dpkg -s sl       //查看软件的安装状态(更详细)


apt-get,在线安装如果有依赖程序,这些依赖的程序会被一并安装上去

选择软件源:


sudo apt-get update   //更新软件源
sudo apt-get install -f //更新软件依赖
sudo apt-get install gcc
sudo apt-get install net-tools
sudo apt-get install oneko
sudo apt-get install cowsay
sudo apt-get install cmatrix
sudo apt-get install frozen-bubble
sudo apt-get remove 软件名
sudo apt-get download 软件名
sudo apt-get clean   //清除目录下/var/cache/apt/archives的安装包


补充


压缩的对象是文件(目录不能被压缩)

ubuntu上的压缩文件的格式 .gz .bz2 .xz


gzip/gunzip     ------>xxx.gz
bzip2/bunzip2   ------>xxx.bz2
xz/unxz         ------->xxx.xz
压缩前:
-rwxrw-r-- 1 jsetc jsetc 6848 1月  14 16:09 seqlist.c*
gzip:
    -rwxrw-r-- 1 jsetc jsetc 1845 1月  14 16:09 seqlist.c.gz*
bzip2:
    -rwxrw-r-- 1 jsetc jsetc 1934 1月  14 16:09 seqlist.c.bz2*
xz:
    -rwxrw-r-- 1 jsetc jsetc 1800 1月  14 16:09 seqlist.c.xz*


压缩率: xz > gzip >bzip2

压缩速率:xz < gzip < bzip2

使用方法:

gzip/gunzip 文件名

注意:压缩和解压缩文件会被替换


打包(归档)

归档的对象是一个目录

将一个目录归档成一个文件,或者将这个归档后的文件重新释放变成一个目录

tar 命令
-c:创建归档文件
-x:释放归档文件
-z:压缩成gzip格式
-j:压缩成bzip2格式
-J:压缩成xz格式
-v:显示过程
-f:后跟的是文件的名字


1.归档


tar -cf hello.tar hello    //将hello的目录打包成hello.tar文件 
tar -xf hello.tar     //将hello.tar拆成hello目录


2.打包并压缩成gzip格式


tar -czf tongxunlu.tar.gz tongxunlu


3.打包并压缩成bzip2格式


tar -cjf tongxunlu.tar.gz tongxunlu


4.打包并压缩成xz格式


tar -cJf tongxunlu.tar.gz tongxunlu


5.拆包(解压缩)


tar -xvf 压缩包   //万能拆包命令
tar -xvf 压缩包 -C 路径


作业


1.将今天所有的命令至少敲2遍

2.自学一些文件相关的命令

head,tail,wc file,more/less,grep,umask


学习计划总结日报表


image.png



相关文章
|
7月前
|
Java 关系型数据库 MySQL
|
7月前
|
SQL 前端开发 数据库
|
Ubuntu API 数据库
苏嵌实训——day19
苏嵌实训——day19
113 0
苏嵌实训——day19
|
消息中间件 Linux
苏嵌实训——day16(下)
苏嵌实训——day16(下)
苏嵌实训——day16(下)
|
网络协议 安全 网络安全
苏嵌实训——day18
苏嵌实训——day18
113 0
苏嵌实训——day18
|
存储 程序员 Linux
苏嵌实训——day14(上)
苏嵌实训——day14(上)
苏嵌实训——day14(上)
|
搜索推荐 API 索引
苏嵌实训——day13(下)
苏嵌实训——day13(下)
111 0
苏嵌实训——day13(下)
|
存储
苏嵌实训——day11(上)
苏嵌实训——day11(上)
106 0
苏嵌实训——day11(上)

热门文章

最新文章