第一次作业
嵌入式底层开发为什么选择c语言
1.从语言特点来说
①C语言有出色的可移植性,能在多种不同体系结构的软/硬平台上运行。
②简洁紧凑,使用灵活的语法机制,并能直接访问硬件能够直接访问硬件的语言有:汇编和C语言汇编属于低级语言,难以完成一些复杂的功能,但是汇编比C语言访问硬件的效率更高。
所以,一般将硬件初始化的工作交给汇编,比较复杂的操作交给C语言。
③C语言具有很高的运行效率。
2.嵌入式开发中的地位——开发工具
3.高级语言中的低级语言:面向过程VS面向对象
面向过程:
“面向过程”(Procedure Oriented)是一种以过程为中心的编程思想。“面向过程”也可称之为“面向记录”编程思想,他们不支持丰富的“面向对象”特性(比如继承、多态),并且它们不允许混合持久化状态和域逻辑。
面向过程就是分析出解决问题所需要的步骤,然后用函数把这些步骤一步一步实现,使用的时候一个一个依次调用就可以了。面向过程其实是最为实际的一种思考方式,就算是面向对象的方法也是含有面向过程的思想。
可以说面向过程是一种基础的方法,它考虑的是实际地实现。一般的面向过程是从上往下步步求精,所以面向过程最重要的是模块化的思想方法。
面向对象:
面向对象的分析根据抽象关键的问题域来分解系统。面向对象的设计是一种提供符号设计系统的面向对象的实现过程,它用非常接近实际领域术语的方法把系统构造成“现实世界”的对象。
面向对象程序设计可以看作一种在程序中包含各种独立而又互相调用的对象的思想,这与传统的思想刚好相反:传统的程序设计主张将程序看作一系列函数的集合,或者直接就是一系列对电脑下达的指令。面向对象程序设计中的每一个对象都应该能够接受数据、处理数据并将数据传达给其它对象,因此它们都可以被看作一个小型的“机器”,即对象。
面向过程和面向对象的区别:
以一个人从A地到B地为例,面向过程就是需要规划路线,了解路况,自己做好一系列的准备;而面向对象就是坐上一辆出租车,告诉司机我要去B地就可以了,不用关心其他的事情。
最后,C语言也有他自身的缺陷,比如代码的复用性差,代码的维护性差,扩展性(新增代码时不改变原来的代码)很差。
linux和unix之间的关系
Linux, Mac OS X, Android, iOS, Chrome OS甚至路由器上的固件,这些操作系统同出一族,都是基于最初的UNIX系统开发而来,统称Unix-like 操作系统。
Unix系统由AT&T贝尔实验室于1960年代开发。Unix哲学是专注于一件事去创造小而精的工具,并将他们做的完美。比如,在Linux终端上可以使用管道符组合几个工具去完成一项复杂的任务。在Unix系统中,一起皆文件,包括硬件设备和特殊文件在内,都属于文件。
Unix的“子孙后代“
截止目前,Unix已有40几年的历史,其子孙繁多。简单的说,Unix沿着个两个分支发展。
学院派分支
一个分支在学术界发展起来。这个分支中,比较出名的是BSD(Berkeley Software Distribution),它是一个开源的unix-like操作系统。BSD衍生出了 FreeBSD, NetBSD, 和 OpenBSD。NeXTStep也是基于BSD开发的,苹果公司的OS X 又是基于NeXTStep开发,iOS又在OS X基础上开发。
MINIX是一个用于教学的Unix-like操作系统。首MINIX启发,大学生 Linux开发了Linux操作系统。我们今天口口相传的Linux操作系统确切来说是GNU/Linux,至于为什么要加个‘GNU‘字样,那是另外一个话题了。GNU/Linux由 Linux kernel 内核和很多 GNU 工具组成。GNU/Linux并不是直接由BSD发展而来,但是它还是基于Unix,况且它出自校园,毕竟还是归结在学院派分支里。今天市面上常见的Android, Chrome OS和嵌入式操作系统,都是基于Linux操作系统开发的。
商业分支
AT&T UNIX, SCO UnixWare和Sun Microsystems Solaris这些是大公司开发的商业操作系统。商业操作系统不是经常接触到,不多说了。
Linux主流的发行版有哪些?有什么特点
Ubuntu
国内乃至全球热门的Linux发行版。也是各种推荐入门Linux爱好者安装的一个Linux发行版。它的特点主要有以下:
安装简单
Unity 3D图形界面,比较华丽(因人而异)
对一些专有驱动支持比较好,例如显卡驱动
社区比较活跃,几乎遇到的问题都可以找到答案
版本更新较快,基本半年一个版本
Debian
几大基础发行版之一,Ubuntu就是基于Debian的。它的基本有如下特点:
Free,最符合开源精神的发行版。默认不包含任何专有驱动
不求新,但求稳。软件包通常选择比较稳定的版本而不是最新的版本
系统的开发维护完全是由社区驱动的
APT软件包管理
图形化安装方式对新手友好
由于安装镜像默认不包含任何专有驱动,所以在安装时候就会出现一些设备驱动不起来的情况,例如无线网卡,我两个笔记本都是安装完系统以后都是用U盘下载缺失的驱动再安装的。
上面说的是默认不包含专有驱动,并不是专有软件就不能在Debian上安装。在安装完成或者联网安装的时候可以通过添加no-free源来安装专有软件。
Fedora
经常和Ubuntu比较的发行版,和Ubuntu最大的不同可能就是包管理不一样吧,其特点如下:
YUM包管理(新的包管理方式正在研发中)
新技术吸纳较快,所以喜欢尝试新技术的可以选择它
官网提供多种桌面环境镜像,可以满足不同桌面喜好的用户(默认是Gnome)
由红帽赞助
基本半年发布一个新版本
图形化安装对新手友好
由于Fedora对新软件及新技术吸纳比较快,所以编程工作者或者技术爱好者更喜欢Fedora一些。并且YUM还提供一些软件工具集合包,例如开发套件,这对于满足特定需求还是比较方便的。
openSUSE
SUSE Linux的open版本,来自德国的发行版,它基本有如下特点:
基于的是企业级的SUSE Linux再加上德国制造,所以非常稳定
华丽的KDE桌面,业界称为“最华丽的Linux发行版”
安装镜像提供多个桌面环境
包管理(YaST)倾向于图形化管理,图形界面用户友好程度要高一些
官网提供常规版本和滚动发行版本
Arch Linux
它的特点官网有说:
轻量级,从选择键盘布局到分区硬盘到安装引导全部由你决定,所以不像前面几个发行版一样会预装一些常用软件
pacman软件包管理工具
灵活,整个系统完全由你说了算,当然你得有对应的能力
完备的WIKI,从安装到使用再到故障排除非常之详细
WIKI中文化程度很高
将它推荐为第一个Linux发行版完全可以打消他们步入LinuxOS的念头。所以还是推荐用过几个“正常”的发行版之后再接触Arch。
我被他吸引的特点是:滚动更新。也就是不像前面的发行版(我玩时候openSUSE还没有滚动发行版)一样有固定的版本,如Debian 8.2,Ubuntu 12.04这样的,它是实时更新的。这样的好处就是对bug和新技术的更新速度要快一些。
当然相应的基本玩这个系统进去第一件事情就是更新系统。貌似用安卓机子的同学用它应该能找到快感。
在Arch社区中还学到了一个新名词“滚挂了”,也就是说长时间不滚动更新一下,很容易造成你的系统太过时,以至于系统更新不成功,所以Arch是一个网络依赖比较强的版本。还有与之对应的一个名词“回滚”,即挂了以后的修复。
Gentoo
Gentoo——最geek的Linux发行版(最最geek的是LFS,反正现在没有敢安装了)。
Gentoo和Arch非常相似,系统的安装你同样得全权负责并且同样有完备的WIKI。与Arch最大的区别可能就是包管理方式,Gentoo的包管理(Portage )效仿了FreeBSD的Ports系统。
Arch偏向于二进制方式优先,Gentoo偏向于源码方式安装,这样的优点就是软件的编译选项都可以定制的,理论上可以将性能优化到极致,但是不知道用户是否能保证自己做出的决定是在优化。所以如果想要体验Gentoo的精神,恐怕是需要编译、编译再编译了(反正我在虚拟机中安装后,虚拟磁盘就坏了)。
Linux Mint
基于Ubuntu的Linux发行版,所以有Ubuntu的特点。与Ubuntu最大的不同就是操作界面更接近WindowsOS,是近三年非常热门的Linux发行版。
CentOS
现在是大名鼎鼎的RedHat Linux的社区版(可以说是剔除了专有代码的RedHat),其特点就是相当相当的稳定,版本更新紧跟RedHat。非常适合作为服务器操作系统使用。
什么是实时性?软件实时性和硬件的实时性
实时操作系统(RTOS)是指当外界事件或数据产生时,能够接受并以足够快的速度予以处理,其处理的结果又能在规定的时间之内来控制生产过程或对处理系统做出快速响应,调度一切可利用的资源完成实时任务,并控制所有实时任务协调一致运行的操作系统。提供及时响应和高可靠性是其主要特点。
有哪些虚拟机软件以及特点
Vmware Workstation,VMware公司的优秀虚拟机软件,VMware公司是全球桌面到数据中心虚拟化解决方案的领导厂商,个人认为Vmware Workstation是最好用的虚拟机软件。
Virtual Box,Virtual Box是Oracle公司旗下的免费开源虚拟机软件,在 Sun 被 Oracle 收购后正式更名成 Oracle VM VirtualBox。
Windows Virtual PC,微软公司旗下产品,Windows Virtual PC 是最新的 Microsoft 虚拟化技术。您可以使用此技术在一台计算机上同时运行多个操作系统,并且只需单击一下,便可直接在运行 Windows 7 的计算机上的虚拟 Windows 环境中运行许多生产应用程序
VMware Player,VMware推出的免费小巧的虚拟机软件,精简版VMware Workstation
如何解决无法删除使用userdel删除用户的问题(2种方法)
- 可使用vipw命令:
root@ www.linuxidc.com :/home# vipw
找到之前创建的用户,用dd删除那行(记得保存:wq or :x)。
root@ www.linuxidc.com :/home# vipw -s
找到那个用户所属组,也dd干掉即可(记得保存:wq or :x)
使用vipw -s的原因只有一个,就是必须保证数据的一致性,不然可能会造成系统崩溃等问题。 - mkdir /home/pipetest/
cp /etc/skel/.bash* /home/pipetest/
罗列根目录中所有子目录以及其存放的类型
在linux的根目录下有很多目录主要目录及存放文件类型如下:
bin (binary)存放使用者经常使用的命令
dev ( dev是设备(device)的英文缩写) 存放所有的外部设备文件
lib 存放放着系统最基本的动态链接共享库文件
media 光盘文件
proc (与进程有关) proc文件系统是一个伪文件系统,它只存在内存当中,而不占用外存空间。它以文件系统的方式为访问系统内核数据的操作提供接口。
sys /sys 目录是将内核的一些信息映射
var 存放系统运行时需要改变的数据文件
tmp 存放临时文件
boot 操作系统启动相关的文件
etc 存放系统管理所需要的配置文件
root 系统管理员(超级用户)的主目录
home 普通用户的主目录
项目开发日报表
| 项目名称 | 【苏嵌实训-嵌入式 linux C 第 1 天】 |
|---|---|
| 今日进度以及任务 | 第一次作业 |
| 本日任务完成情况(详细说明本日任务是否按计划完成,开发的代码量) | 1. 在 Linux 虚拟机上使用 Linux 命令 2. 用 gedit 或者vim 编写 C 源代码,用 gcc 编译产生可执行文件3. 自学 20 个 Linux 命令和完成两个C语言编程题4. 完成老师留的作业所有任务都已完成 |
| 本日开发中出现的问题汇总 | 无 |
| 本日未解决问题 | 无 |
| 本日开发收获 | 了解了嵌入式系统的基本知识以及如何进行基础操作 |
| 其他 | 无 |
本文探讨了嵌入式底层开发为何选择C语言,包括其可移植性、运行效率和作为开发工具的重要性。C语言在嵌入式领域的地位和与面向过程编程的联系也被阐述。此外,文章还介绍了Linux与Unix的关系,Linux主流发行版的特征,以及实时性的概念。还讨论了虚拟机软件,如VMware和VirtualBox,并提供了解决Linux中userdel删除用户问题的方法。
201

被折叠的 条评论
为什么被折叠?



