2014025692 《嵌入式系统程序设计》第一周学习总结

本周正式开始学习《嵌入式系统程序设计》,在课上老师指导我们复习了Linux操作系统的Shell命令、vim编辑器以及gcc编译相关方面的知识;在课下,通过查找资料和“实验楼”的练习。在这个过程中,我收获了很多,同时也遇到了一些挫折,在安装Linux系统时就遇到了问题。

一、Linux系统的安装

首先我遇到的就是Linux安装问题。我安装好虚拟机后,创建虚拟机时只能选择32位系统,没有64位选项,装载ISO镜像后安装时(ISO是64位),总会出现黑屏并显示以下一行信息:

this kernel requires an x86-64 cpu but only detected an i686 cpu unable to boot please use a kernel appropriate for your cpu.

我尝试了几次都是这样,无奈我只好百度,并成功找到了解决方法。在虚拟机安装64位操作系统必须满足以下三个条件:
1、64位的CPU
2、安装的系统必须为64位
3、CPU允许硬件虚拟化
经过排查,我是第三项没有满足,CPU虚拟化没开。

开启需要进入BIOS模式(开机logo画面按F2【电脑型号不同,按键不同】)。进入后依次选择Configuration-->Intel Virtualization-->Enabled(电脑型号不同,名字大同小异),重启电脑后,就会发现创建虚拟机时有Linux-64选项了,现在可以成功安装系统,问题解决。

二、Linux基本Shell命令

Linux相比于Windows最大的不同是Linux可以实现全键盘操作,显著的提高了工作效率,而这一功能便是通过输入各种命令实现的,以下便是最常用的命令:

pwd                   查看当前的目录地址
mkdir abc             创建一个名字为 abc 的文件目录
cd abc                进入 abc 目录中
ls                    查看当前目录下的文件
ls -l                 长格式查看文件,可查看文件权限等信息
ls -a                 查看包括隐藏的全部文件。可以与 -l 混用实现更强大的功能
cp /etc/abc ./        将/etc/abc文件复制到当前目录
rm abc                删除 abc 文件

注意&技巧:
  1、TAB键补全:可以补全命令、命令参数、文件名等,可以提高效率和减少错误。
  2、当要复制文件到当前目录时,一定要记得在命令后加上"."或"./",我曾因这个问题坤肉很久。

三、VIM操作

VIM是全键盘操作的编辑器,对于能熟练掌握VIM命令的人来说,这简直就是编程神器。VIM有三个最常用的模式:普通模式、插入模式、底层命令模式。三种模式相互切换:

普通模式    i(在当前坐标处进行编辑)->    插入模式
           a(在光标后插入编辑)   ->    插入模式
           :(shift+;)           ->    底层命令模式
插入模式    ESC键                 ->    普通模式

注意&技巧:
  1、普通模式下,想要在光标后输入字符,要按 a 而不是 i ,我就因输入字符后总留一个字符而痛苦过。
  2、要清醒的知道当前处于什么模式,且灵活切换,不要试图在插入模式用上下左右箭头移动光标,否则会发生好糟糕的事情(本周第一次课差点因这个疯掉),时刻记得左上角的 ESC键。

普通模式

o/O(shift+o)       在当前行后/前插入一个新行
h/j/k/l            左/下/上/右
x                  删除光标所在的字符
dd                 删除光标所在的一整行
yy                 复制光标所在的一行
p/P(Shift+p)       粘贴至光标后(下)/前(上)
~(shift+`)         切换当前字母大小写(很有意思的小功能)
gg                 光标移动到第一行
G(shift+g)         光标移动到最后一行
nG(shift+g)        光标移动到指定的一行
cw                 替换一个单词,即删除一个单词,并进入插入模式(很实用)
u                  撤销上一次操作
/+.../?+...        向下/向上查找

注意&技巧:
  1、通过“实验楼“的实验,我认为掌握主键盘的h/j/k/l操作光标上下左右的移动以及x键删除比用小键盘操作速度快的多。
  2、dd 未删除当前一行(其实它是剪切),p 复制到下一行,所以 ddp 这个组合键就很轻易地实现上下文互换。
  3、很多命令可以和数字连用,提高效率。例如 3dd、u3、3G 等。

底层命令模式

:w            保存文件
:q            退出文件
:x/:wq        保存并退出文件
:!q           强制退出

注意&技巧:
  1、好奇查了下资料,x与wq同为保存并退出。但文件未修改的情况下,wq会强制更新修改日期,对深层次编程会有一定的影响,所以最好用x键。

四、GCC

gcc编译过程:

gcc -E text.c -o text.i        预处理,得到 text.i
gcc -S text.i -o text.s        编译,得到 text.s
gcc -c text.s -o text.o        汇编,得到 text.o
gcc text.o -o text             链接,得到 text 可执行文件
gcc text.c -o text             一个命令经过以上步骤得到可执行文件 text

注意&技巧:
  1、有时编译的可执行文件不能运行,是因为没有运行权限,需要用chmod命令加上x(运行)权限。
  2、先预处理,再打开.i文件查看内容;可将.c源文件的预处理代买注释掉,然后预处理并打开.i文件,再次查看内容,便可验证预处理功能。

五、本周总结

本周通过课上学习、“实验楼“练习(“实验楼”文案很有意思)以及因兴趣而查的资料,对Linux的Shell命令、VIM、GCC编译都有了更系统的认识,但仍欠熟练,只有熟练后才能将单个命令组合成套路,才能掌握类似 ddp 这样快速互换vim上下行的组合命令。

由于视力不好,看不清大屏幕,希望老师在课上打命令时能留一些时间供拍照(只能看着手机打代码),否则很难跟上节奏,谢谢老师!

六、学习进度条

代码行数(新增/累积) 博客量(新增/累积) 学习时间(新增/累积) 重要成长
目标 5000行 30篇 400小时
第一周 200/200 2/2 20/20

七、参考资料

  • 《嵌入式应用程序设计》学习指导
posted @ 2017-04-22 15:47  舲舟聆雨  阅读(148)  评论(1编辑  收藏  举报