main函数:
我们经常用的main函数都是不带参数的。因此main 后的括号都是空括号。实际上,main函数可以带参数,这个参数可以认为是 main函数的形式参数。C语言规定main函数的参数只能有两个, 习惯上这两个参数写为argc和argv。因此,main函数的函数头可写为: main (argc,argv)C语言还规定argc(第一个形参)必须是整型变量,argv( 第二个形参)必须是指向字符串的指针数组。加上形参说明后,main函数的函数头应写为: main (argc,argv) int argv; char *argv[]; 或写成: main (int argc,char *argv[])
由于main函数不能被其它函数调用, 因此不可能在程序内部取得实际值。那么,在何处把实参值赋予main函数的形参呢? 实际上,main函数的参数值是从操作系统命令行上获得的。当我们要运行一个可执行文件时,在DOS提示符下键入文件名,再输入实际参数即可把这些实参传送到main的形参中去。 DOS提示符下命令行的一般形式为:
C:>可执行文件名 参数 参数……;
但是应该特别注意的是,main 的两个形参和命令行中的参数在位置上不是一一对应的。因为,main的形参只有二个,而命令行中的参数个数原则上未加限制。argc参数表示了命令行中参数的个数(注意:文件名本身也算一个参数),argc的值是在输入命令行时由系统按实际参数的个数自动赋予的。
嵌入式系统CPU的选择:
ARM体系结构:
crotex-M:MAU(stm32)
crotex-R:实时性
crotex-A:MPU
1、什么是嵌入式技术?
在已有硬件上移植操作系统。
2、嵌入式开发与单片机开发最大区别?
是否有操作系统,
与传统开发区别:
传统开发耦合性高,移植性差,
3、什么样的系统才能作为嵌入式系统?
可移植的系统才能作为嵌入式系统 如:VxWorks; --RT-Thread --ucossii(可以在单片机上):这三个实时性较好
4、什么叫实时性?
规定的时间内完成规定的动作
实时操作系统:RT-Thread
Linux无实时性
嵌入式开发缺点:成本较高 解决方式:将操作系统变小变专
优点:移植性好
C语言之父:丹尼斯里奇 1978-1979
1979:unix操作系统(商业)
开源运动:抵制商业软件(GPL协议)
POSIX:可移植操作系统接口
GNU计划:(GNU is not unix)
1991:Linux操作系统(免费) Linux0.11
(成千上万的人开发Linux内核)
linux发行版:ubantu Redhat
1、虚拟机作用?
通过软件的方法模拟一台PC机
2、虚拟机种类:
wmware(win10):只支持windows版本
virtual box(Linux、macos、win10)
virtual PC
vmware15+ubantu18.04
Linux命令使用:
1、用户管理:普通用户(jsetc)、超级用户(root):su sudo adduser userdel
2、文件、目录管理 ls chmod touch cat rm gcc mkdir cd mv cp pwd
rm -r
3、进程管理:ps kill
4、网络管理
5、设备管理
ls:查看
gedit +文件名.c 写代码
gcc 文件名:编译
./a.out :运行
clear :清屏
pwd:查看当前路径
课程内容及课程目标:
1、嵌入式Linux命令(基本命令。高级。炫酷) 目标:40-45
2、嵌入式Linux文本编辑器 -vim 目标:基本操作。如何配置和安装vim
3、嵌入式Linux的IDE (集成开发环境:vscode、qtcreater、vs2019远程调试) 目标IDE:
4、嵌入式编译器-gcc(编译选项、静态库和动态库的制作) 目标:掌握静态库和动态库的制作
sudo:普通用户权限不够时可以加sudo
su - root :切换用户
adduser 用户名:创建用户
deluser 用户名:删除用户
kill -9 进程号:杀死进程 -9强制
ps:看正在进行的进程 -a 显示所有执行的程序 -e查看所有进程
man 命令:查看命令
ls:查看当前目录下有哪些文件
-l 显示详细信息:第一列:文件类型
-R 查看子目录下的所有文件
-a 查看所有文件 . 开头的文件为隐藏文件
可以组合 例如 -al
r 可读4 w可写2 x可执行1
-rw-r–r-- /可以用数字
最前面文件类型
三个为一组
前三个:当前用户对该文件访问权限
中间三个:与当前用户所在同一组的用户
最后三个:其它用户
chmod :改变文件属性
例:chmod u+x 文件名
u 用户自己
g 组
o 其它other
a 所有
Linux一点哲学原理:一切皆为文件
分类:
普通文件(-)
目录文件(d)
设备文件(c/b)(字符设备/块设备)
链接文件(l)
临时文件:(重启后没了 )
1、管道文件(-p)
2、堆栈文件(-f)
3、共享文件(-s)
touch 创建一个新的文件
cat :查看文件内容
-n:显示行号
rm 删除文件
-f 强制删除
rmdir:删除空目录
rm -r 目录:删除目录
gedit:编辑
gcc:编译 -o
mkdir :创建目录
file:查看文件属性
-p 根据写的路径创建 例 1211/kk/mm/nn
cd 进入目录
cd … 返回上一级路径
cd / :
/根目录
~:当前用户的工作目录
. :当前目录
bin :普通用户命令(系统命令)
sbin:管理员命令(超级用户命令)
dev:存放系统的设备文件
etc:系统的所有配置文件
lib:系统运行的库文件
usr: 存放第三方软件及工具(头文件、库)
home :普通用户的工作目录
root :管路员(超级用户)的工作目录
问题:根目录下的每个子目录的作用:
proc sys mnt boot
绝对路径和相对路径
绝对路径:从根目录开始
相对路径:不从根目录开始
cp 要拷贝文件 目标目录:拷贝文件
cp -r 要拷贝目录 目标目录:拷贝目录
mv 要剪切文件 目标目录 :剪切文件
mv -r 要剪切目录 目标目录:剪切目录
可以用来改名字
例:mv hello.c demo.c
检查是否联网:ping ip地址
ifconfig :查看ip
ifconfig 网卡名字 ip:修改ip
xshell 软件 例 ssh root@192.168.12.13
ens33:网卡
ifconfig ens33 192.168.204.130:设置IP地址
ifconfig ens33 down :关网卡
ifconfig ens33 up :开网卡
ifup ens33:启动网卡
ifdown ens33:禁用网卡
远程链接:ssh
先要安装 apt-get install sshssh
apt-get使用:是ubantu系统中的包管理工具,可以用来安装,卸载包,也可以用来升级包
使用apt-get命令先要设置软件源更新
语法格式:apt-get[options]command
update:是更新软件列表
upgrade:是更新软件
高阶命令:
find:
find . -name “.c" | wc -l :显示有多少.c文件
find . -name ".c” | xargs wc -l :显示.c文件有多少行
find (. )-name 文件名 :查找文件
grep:过滤
cat .c文件名 | grep -n 词:在.c文件中查看有这个词的语句 -n 显示行号
ls | grep 词:过滤出所要找的词
which和whereis
查找一个应用程序(二进制文件,命令也是程序)
which只显示二进制文件的路径
whereis显示二进制文件,与其源码或者man手册位置
uname -a :显示整个系统的信息
压缩 和解压缩
diff:比较两个文件的不同之处
命令总结:
用户管理:su sudo adduser deluser ps kill
文件管理:ls(-l -a -R) chmod cat touch gedit gcc rm tar grep which/whereis mkdir cd pwd rmdir cp mv
网络:ifconfig ping
其它:clear reset reboot
shell :grep awk sed
文本编辑器(单个文件操作):gedit vi/vim