苏嵌 项目实战
学习日志 姓名:张一林 日期:07.12
|
|
今日学习任务
| 1. 嵌入式 Linux开发工具篇问题整理 2. 下午的摸底测试,编写4个程序 |
今日任务完成情况
(详细说明本日任务是否按计划完成,开发的代码量) | 1.今天早上先整理了问题 2.4个程序都在规定的时间内通过查阅书记,讨论来解决 |
今日开发中出现的问题汇总
| 今天早上先整理了问题,在早上大致把整体的问题给解决了,先把不是很清楚的给留了起来;到了下午再把一些不太清楚的通过百度来解决掉。 下午的编程,让我意识到c语言掌握的不是很牢固,有好多知识都已经忘记
|
今日未解决问题
| 无 |
今日开发收获 | 通过今天一天的学习,主要讲前面几天所学的内容又做了进一步的整理和记忆,又再一次的复习了C语言,对于以后用到C语言起到了警醒的作用 |
自我评价
(是否按开发规范完成既定任务,需要改进的地方,与他人合作效果等)
| 今天这一天,我意识到对于前面的知识还掌握得不够透彻,总结时还需要一点一点的揣摩,对于问得细一点的知识也只是知道个大概;下午编程感觉自己对C语言掌握的不是很好,对于今天的编程,都是仅仅实现了最普通的功能,没做到有优化的地方,因此,C语言还是得多看 |
其他
| 1、 嵌入式开发与传统开发的区别?(同类问题:单片机开发与嵌入式开发的区别) 是否有无操作系统,有操作系统的优势: 1. 提供多任务机制 2. 提供网络协议栈 3. 提供开源的软件和工具 4. 耦合度低可移植性强 5. 对软件开发人员的要求低 2、 移植操作系统的好处有哪些? 提供多任务机制 提供网络协议栈 提供开源的软件和工具 耦合度低可移植性强 对软件开发人员的要求低 3、 嵌入式工程师的岗位划分有哪些?所具备的能力是什么?
能力:至少精通一种MCU/MPU体系结构 至少精通一种DSP体系结构 至少精通一种嵌入式操作系统 至少精通一种嵌入式语言 熟练掌握嵌入式软件设计、项目管理和测试的技巧 4、 人工智能和嵌入式之间有什么关系?人工智能和大数据、云计算的关系? 人工智能是让机器具备人的思维从而让其进行机器学习再进而进行深度学习,进行机器学习时要运用到大数据来筛选分析出大量的应用数据,也需要云计算来处理 5、 CPU、GPU、DPU、TPU 分别是什么? CPU,中央处理器(Central Processing Unit)是一块超大规模的集成电路,是一台计算机的运算核心 GPU图形处理器(Graphics Processing Unit),又称显示核心、视觉处理器、显示芯片 DPU(Distributed Processing Unit),即分散处理单元,常应用于DCS控制系统中 TPU,是Tensor Processing Unit简称,高性能处理器,是专为机器学习量身定做的 6、 嵌入式操作系统有哪些?vxwork的特点?ucossii的特点? ucos,linux,winCE,vxwork,ucossii vxwork的特点:可靠性,实时性,可剪裁性
7、 什么是实时性?哪些操作系统具有实时性? 实时性是指系统能够在指定的时间准时完成给定的操作 vxwork 硬实时性 8、 嵌入式的就业前景和以后的发展方向如何? 嵌入式领域较新,发展非常快, 嵌入式系统的广泛应用必然会带来相关技术人才的极大需求 1.ARM + Linux/Android开发 嵌入式软/硬件开发工程师 2.FPGA开发 3.DSP开发 4.IC设计 9、Linux操作系统有哪些特点? 安全可靠 源码公开 10、Linux和unix 操作系统的区别? Linux是开源的,免费的,并且提供功能强大的操作系统 11、虚拟机的作用是什么?主流的虚拟机有哪些? 12、分别阐述POSIX、GNU、GPL的理解? POSIX是linux和Unix达成在双方平台上都可以编译运行程序的协议 GNU是linux提出区别于Unix的计划,提出许多独有且功能强大的工具 GPL是linux代码开源,但是使用的工程师对源码的修改必须上传共享的协议 13、Linux发行版有哪些?各自的特点是什么? 1.Arch Linux 在安装过程中提供了强大的可定制选择,支持你下载和安装自己所需的程序包,能够帮助那些使用Arch构建系统和存储库的用户安装尽可能少的程序,减少了对编码产生干扰的可能 2.Debian 稳定性强 3.Raspbian 被设计为的一个教育工具,对于那些有兴趣学习编写代码的人来说,是一个完美的系统。 4.Gentoo 它不仅可以与用户机器上的硬件需求相匹配,还可以精确地确定哪些版本的程序包可以被安装。 6. Ubuntu 为初学者设计的,它包含了桌面界面和自动更新 14、Linux和windows 的区别? Linux 开源 windows 不开源 15、Linux文件类型有哪些? -普通文件 d目录文件 c/b设备文件 l链接文件 p管道文件 s共享文件 f堆栈文件 .隐藏文件 16、罗列Linux下文件操作的命令有哪些?(常见面试命令) touch 创建文件 cat 查看文件 rm 删除文件 rm –f 强制删除 ls 列出文件及子目录 17、如何配置vim编辑器?Linux 下还有哪些比较常用的文本编辑器? vim 文件名 i是插入,Esc取消插入,Shift+:输入wq是保存并退出 q!强制退出 YY 复制 PP粘贴 DD删除 gedit 18、如何压缩、解压文件?命令是什么? 压缩文件:tar cvzf 文件名.tar.gz 文件名.c 解压文件:tar xvzf 文件名.tar.gz 解压文件到指定目录:tar xvzf 文件名.tar.gz –c 指定的目录 19、gcc 编译器的优点有哪些?还知道哪些C 的编译器? 可交叉编译 20、什么是交叉编译器?交叉编译器的作用?为什么需要交叉编译? 交叉编译器:指在当前CPU平台上编译的可以在其他CPU平台上使用 不同的CPU上有不同的汇编 21、C语言中源文件到可执行文件经历哪几个步骤?每个步骤具体做哪些工作? 预处理:头文件展开 宏替换 条件编译 操作:gcc –E 文件名 gcc –E *.c >(重定向) *.i 编译:语法检查,词法分析 生成*.o 操作:gcc –c *.c 汇编:生成汇编文件 操作:gcc –S *.c 链接:符号表的建立,包括地址,空间分配 重定义和符号决议。处理分为静态链接和动态链接 22、#include <stdio.h> 和 #include “stdio.h”的区别? 主要是搜索路径的不同 <>是直接在系统的目录下搜索;“”是现在当前的目录下搜索,无果后再到系统的目录下查找 23、分别阐述-I -w -Wall -O3 的作用? -I 指定第三方搜索路径 -w 消除警告 -Wall 打开全部警告 -o3 三级优化 24、什么是库文件?库文件的特点?
特点:只能使用函数或变量,看不到具体实现 25、Linux下库文件的分类有哪些?库文件的存放路径是什么? 静态库和动态库 根目录下的lib 26、静态库和动态库的区别? 静态库是执行程序之前加入到代码中,成为代码的一部分。静态库执行速度快,易于部署,但是文件过大,不易于升级; 动态库是在执行过程中需要的时候就在库里搜索。动态库执行速度慢,不易于部署,文件小,易于升级 27、如何制作和使用静态库和动态库? 静态库的制作:gcc –c *.c ar rcs lib库名.a *.c 静态库的使用:gcc main.c –i库名 –L. 动态库的制作:gcc –shared –fPIC –o库名.so 源文件 动态库的使用:gcc 源文件.c ./库名.so –o 可执行文件 28、GDB的特点有哪些? 启动被调试程序 能监视程序中变量的值; 能一行行地执行代码 29、分别阐述run break info break continue finish 命令的作用? Run 运行 break 断点 info break 查看断点 continue 跳过断点 finish 子程序执行完成 30、make工程管理的作用? 一个工程中的源文件不计数,其按类型、功能、模块分别放在若干个目录中,makefile定义了一系列的规则来指定,哪 些文件需要先编译,哪些文件需要后编译,哪些文件需要重新编译,甚至于进行更复杂的功能操作,因为makefile就像一个Shell脚本一样,其中也可以执行操所系统的命令。 31、makefile的语法是什么?(定义、执行顺序) Makefile的语法三要素为目标体 依赖体 和命令,执行命令需要依赖文件,会生成目标文件 目标:依赖 Tab 命令 执行顺序:由上而下执行 32、企业级工程目录是如何创建?分别描述三个不同 makefile的作用? 总控 Makefile:将各个子目录下的 .o 文件链接生成可执行文件 子目录 Makefile:将目录下的 .c 文件编译生成 .o 文件 scripts 目录下的 Makefile:相当于C语言中的头文件定义了一些变量
|