1:两者有无操作系统。
1)传统式开法耦合度高,导致软件的移植性差。
2)传统式开发软件人员要求高,导致企业人才欠缺及产品创新不足。
3)嵌入式开发提供多任务机制
4)嵌入式开发提供网路协议栈。
5)嵌入式开发提供了开源的软件和工具。
2:好处:1)嵌入式开发提供多任务机制
2)嵌入式开发提供网路协议栈。
3)嵌入式开发提供了开源的软件和工具。
3:岗位划分:1)应用软件工程师:精通一门语言(C,C++);熟悉一款操作系统。
2)系统软件工程师:精通C语言;熟悉汇编;理解操作系统的实现;熟悉硬件工作原理。
4:人工智能不可能没有嵌入式,嵌入式开启了人工智能的进程;
大数据是人工智能的养料来源,没有大数据,机器就无法学习,机器不学习就无法实现智能;
有些对时间响应性相求不是很高的人工智能的应用,就可以把它直接部署到云端实现,因为云端服务器的运算能力比较强,本地的运算能力比较差。
5:CPU:中央处理器
DPU:深度学习处理器
TPU:张量处理器
GPU:图像处理器
6:操作系统有:Vxworks,Symbian,WinCE,Linux,UcossII
VXwork:有硬实时性,高用型
UcossII:免费性的
7:实时性:在规定时间内完成规定动作
硬实时性:Vxworks
软实时性:WinCE
无实时性:Linux
8:嵌入式的就业前景:从现在市场需求和走势看出,在以后的几年内。市场对嵌入式Linux开发工程师的需求旺盛。而目前熟练的Linux应用人才很少。由于嵌入式Linux开发人才的缺乏也带来了这个行业可观的薪酬待遇,嵌入式Linux的从业者薪酬比其他IT业同行大约高出50%
嵌入式开发的发展方向:一类是学电子工程、通信工程等偏硬件专业出身的人,他们主要是搞硬件设计,有时要开发一些与硬件关系最密切的最底层软件,如BootLoader、Board Support Package(像PC的BIOS一样,往下驱动硬件,往上支持操作系统)
另一类是学软件、计算机专业出身的人,主要从事嵌入式操作系统和应用软件的开发。如果这类人对硬件原理和接口有较好的掌握,也完全可以写BSP和硬件驱动程序。
9:特点:安全可靠,
1.模块化程度高
2.源码公开
3.广泛的硬件支持
4.安全性及可靠性好
5.具有优秀的开发工具
6.有很好的网络支持利文件系统支持
7.与UNIX完全兼容
10:Linux与Unix区别:
1):Linux和UNIX的最大的区别是,前者是开发源代码的自由软件,而后者是对源代码实行知识产权保护的传统商业软件。
2):另外两大区别: UNIX系统大多是与硬件配套的,而Linux则可运行在多种硬件平台上。
3):UNIX是商业软件,而Linux是自由软件,免费、公开源代码的。
11:虚拟机(Virtual Machine)指通过软件模拟的具有完整硬件系统功能的、运行在一个完全隔离环境中的完整计算机系统。
虚拟机的优点:
1.演示环境,可以安装各种演示环境。
2.保证主机的快速运行,减少不必要的垃圾安装程序,偶尔使用的程序,或者测试用的程序在虚拟机上运行。
3.避免每次重新安装,银行等常用工具,不经常使用,而且要求保密比较好的,单独在一个环境下面运行;
4.想测试一下不熟悉的应用,在虚拟机中随便安装和彻底删除;
5.可以体验不同版本的操作系统,如Linux、Mac等。
主流虚拟机有:Xen、KVM、VMware、hyper-v、VirtualBox,VMware Workstation
12:POSIX是Linux和Unix当初制定的一个协议,当初制定的一个可移植性操作系统,是双方都可以运行。
GNU是GNU计划中的,它是为了Linux公司创建一个自由的操作系统。
GPL是让所有人都可以运行、复制软件的自由,发行传播软件的自由,获得软件源码的自由,改进软件并将自己作出的改进版本向社会发行传播的自由。 同时GPL还规定:只要这种修改文本在整体上或者其某个部分来源于遵循GPL的程序,该修改文本的整体就必须按照GPL流通。
13:发行版:Ubuntu, Debian GNU/Linux ,Red Hat
RedHat:注重性能和稳定性以及对硬件的支持
Ubuntu:安装映像包含Try Ubuntu功能,可以让你在硬盘真正安装之前尝试Ubuntu,很炫
14:Linux的操作比较复杂,windows的比较简单.
Linux速度比较快,安全性比windows好
1,文件格式是不同。windows 操作系统内核是NT,而linux 是 shell;
2,windows 硬盘文件格式是fat32或NTSF,而linux 需要的文件格式是ext2或ext
3,用户界面不同;
4,硬件配置要求不同;
15:-:普通文件;d:目录文件;b:设备文件;l:链接文件;p:管道文件;s:共享文件;f:堆栈文件
16:chmod:修改权限,ls:查看文件,touch:创建文件,cat:查看文件内容,rm:删除文件,rm -f:强制删除,gedit:编写程序,gcc:编译文件。
17:1)vim可以分为三种状态,分别是命令模式、插入模式
和底行模式
1、插入模式
按「i」切换进入插入模式「insert mode」,按“i”进入插入模式后是从光标当前位置开始输入文件;
按「a」进入插入模式后,是从目前光标所在位置的下一个位置开始输入文字;
按「o」进入插入模式后,是插入新的一行,从行首开始输入文字。
2、从插入模式切换为命令行模式
按「ESC」键。
2) Emacs,TextMate,Sublime Text
18:用Linux命令来压缩解压文件。
解压缩文件:tar cvzf 压缩文件名 被压缩文件名
解压文件:tar xvzf 解压文件名
19:gcc编译器的优点:可制定静态库与动态库;gcc是一款价交叉编译平台
C语言编译平台: visual c++6.0 ;
2、 visual studio 3、 win-tc非常方便:
3、 Turb C(只能编译C语言) ;
20:交叉编译器是GNU计划中的,gcc就是此计划中提出的,也就是交叉编译器
交叉编译器作用:可以将一个CPU平台上编译出的程序在评一个CPU平台上运行
因为不同的处理器有不同的汇编,不同汇编生成不同的机器码。
21:执行文件要经过:预处理---编译---汇编---链接
预处理:将头文件展开;进行宏替换;条件编译
编译:进行语法检查
汇编:j将程序翻译成机器识别的机器语言
链接:进行符号表格的建立
22:<>:搜索路径实在系统的头文件中目录中寻找
“”:先在当前目录中寻找,找不到再去系统的头文件目录中寻找
23:-l:指定要链接的库
-w:显示目前系统的登陆的用户信息
-Wall:显示警告信息
-O3:进行优化,支持函数集成优化
24:库文件是:用来保存函数或者变量。
特点:只能使用,而看不到具体实现。
25:有静态库以及动态库。
存放路径:存放在根目录下的lib/目录下
26:静态库:缺点:可执行文件大,不易于升级。优点:执行速度快,易于代码部署
动态库:缺点:执行速度慢,不易于代码部署。优点:可执行文件小,易于升级
27:静态库创建:gcc -c 文件名; ar rcs 库名 文件.o
静态库的使用:gcc 文件名 -l指定库 -L
动态库的创建:gcc -shared -fpIc -o库名.so 源文件.c
动态库的使用:gcc 源文件.c ./库名.so -o可执行文件
28:GDB特点:GDB是GNU计划发布的一款功能强大的调试工具;能够启动被调试的程序;能够让被调试的程序在指定位置停止。
29:run:继续运行程序
break:在指定位置停止
Info:查看信息
continue:跳出断点的的代码往下执行
finish:让子函数运行完成
30.make:1)可进行自动编译
2)脚本文件可用来做批处理
3)可存放多个.c文件,以及图片,文档,视频文件
31:目标体:依赖体
(Tab) 命令
32
子目录下的Makefile:将目录下的.c文件编译成.o文件
总控下的Makefile:将各个子目录下的.o文件生成可执行文件
Scipts目录下的Makefile:相当于C语言的头文件,定义了一些变量
第一个:int main()
3 {
4 int i; //定义两个变量,作为二维数组
5 int j;
6 int a[100][100]; //定义一个二维数组
7 for(i=0;i<11;i++) //此循环让扬辉三角的第一列和每一行的最后一列的
值为1
8 {
9 a[i][0]=1;
10 a[i][i]=1;
11 }
12 for(i=2;i<11;i++) //此循环是为了得出扬辉三角的其他值
13 {
14 for(j=1;j<=i-1;j++)
15 a[i][j]=a[i-1][j-1]+a[i-1][j]; //每个值是上一行对应位置的> 结果加上前面一个值
16 }
17 for(i=0;i<11;i++) //对应扬辉三角的每一行每一列用for循环
18 {
19 for(j=0;j<=i;j++) //此循环为了输出完整的扬辉三角
20 {
21 printf("%5d",a[i][j]);
第二题: int main()
3 {
4 float a; //定义四个变量,一个输出,一个运算符号,两个输入值
5 float b;
6 char s;
7 float c;
8 scanf("%f,%c,%f",&a,&s,&b); //从键盘输入算式
9 if(s == '+') //判断运算符,分为四种情况
10 {
11 c = a + b; //让得出的加法结果赋值给c
12 printf("a + b = %f\n",c);
13 }
14 if(s=='-')
15 {
16 c=a-b;
17 printf("a-b=%f\n",c); //让得出的减法结果赋值给c
18 }
19 if(s=='*')
20 {
21 c=a*b;
22 printf("a*b=%f\n",c);
}
24 if(s=='/')
25 {
26 c=a/b;
27 printf("a/b=%f\n",c); //让得出的结果赋值给c,然后输出
28 }
29 }
30 第三题: 1 #include<stdio.h>
2 int main()
3 {
4 int n; //定义一个变量显示为n阶乘
5 int i; //定义一个变量作为中间变量
6 int s = 1;
7 scanf("%d",&n); //从键盘输入n的值
8 for(i=1;i<=n;i++) //此循环将阶乘反过来从1开始一次往上进行乘法运
算
9 {
10 s=s*i;
11 }
12 printf("%d\n",s); //输出最终的结果
13 return 0;
14 }
~ 第四题: int main()
3 {
4 char str[100]; //定义母串的数组变量
5 char substr[100]; //定义字串的数组变量
6 int i; //定义两个变量分别作为母串和字串的中间变量
7 int k;
8 int count = 0; //定义一个变量作为计数次数的变量
9 printf("请输入母串str:");
10 scanf("%s",str); //输入母串
11 printf("请输入子串substr:");
12 scanf("%s",substr); //输入字串
13 for(i = 0,k = 0;str[i] == substr[k],str[i] != '\0';i++,k++) //此循
环是将母串和字串一个字符一个字符的寻找对比,知道母串结束跳出循环
14 {
15 if(substr[k+1] == '\0') //此判断语句是判断子串是否全部对比结
束
16 count++; //每有一次对应次数加一
17 }
18 printf("substr在str出现的次数为%d\n",count); //输出最终结果
19 return 0;
20 }
~