从零学习嵌入式(第一周)

1.linux

        学习嵌入式,首先我们要做的就是了解linux,因为现在市面上的大部分操作系统,都是基于linux系统开发的。而了解linux,就需要用到ubuntu系统,因为ubuntu使用的是原生的纯Linux系统环境。

1.1配置嵌入式环境

        在当前电脑操作系统都为window的情况下,使用ubuntu系统有两个方法,第一个就是在电脑中安装ubuntu系统,每次开机的时候可以切换系统,第二个就是安装虚拟机,在虚拟机中打开使用ubuntu系统。最好是第二个,因为在嵌入式学习中,有的时候使用window中的软件编辑更加方便,但是又需要在ubuntu中运行,使用虚拟机就可以很好的来回切换。

        我使用的是虚拟机VMware Workstation Pro,在百度上就可以搜索下载,然后下载ubuntu系统文件,并用虚拟机打开就行。

        c语言的编辑器有很多,我使用的是VS Code,这个软件几乎所有的功能都由插件提供,需要什么装什么,是轻量,丝滑,极速,备受赞誉的编程神器,在windows、mac、linux中都能使用。

1.2了解linux         

        1.2.1使用linux

        按Ctrl+Alt+R打开终端,或者鼠标右键桌面,在右键菜单栏里打开终端。在linux系统中,用户无法直接调用文件,需要通过系统调用接口一步步选取查找确定目标文件,并且返回界面让用户查看。

        linux有两种界面,可以按Ctrl+Alt+F2/F7切换。

        linux的优点:开放性,完全免费,多用户,多任务,良好的用户界面,设备独立性,丰富的网络功能,可靠的系统安全性,良好的可移植性。

        linux的指令手册:man 函数,在终端输入man man 可以查看man手册的指令列表,输入man -f '指令' 可以查看指令的分类,输入man 数字 指令 可以查看指令的具体作用。

        终端中的“~”表示家目录,用户一般只有在家目录下才能修改,添加和删除文件和目录。

        1.2.2linux指令

        pwd:查看当前目录路径。

        sudo -s:进入管理员模式(可以在一切目录下修改,添加和删除文件和目录)

        su gec:进入用户模式

        ls:列出当前目录内容(不显示子目录文件)

        ls  /文件名:列出指定目录内容        

        ctrl+c在linux中表示强制中断/结束。

        linux选中内容表示复制,按下滚轮表示粘贴。

        ls -l:以长列表形式显示文件信息。

        ls -a:显示所有文件(包括隐藏文件,但不显示子目录文件)

        cd:切换到指定目录

        cp:复制

        mv:剪切(不粘贴就是删除)

         touch:创建文件

        mkdir:创建目录

        rm:删除文件

        rmdir:删除目录

添加共享文件夹可以使windows和linux对同一文件进行操作。

2c语言

        c语言是让人与机器沟通的桥梁。

2.1 了解c语言

        头文件:头文件的作用是对函数进行声明,没有头文件运行编译不一定会出现编译错误,但是会发出警告,出现隐式声明。

        main:每个程序都要有的主函数,并且只能有一个。如果main前无定义,系统会警告并且自动定义为int main()类型。

        int main():整型函数,结尾必须加上return 0;

        printf:输出函数

        scanf:标准输入

        enum:枚举,增加代码可读性。

2.2字符

        2.2.1字符类型

        int :整型,例:1。4个字节

        unsigned:无符号整型,范围内没有负数。4个字节

        float:浮点型,例:3.14。4个字节

        double:双精度浮点型,在linux中,double的范围包含float,所以linux中只有dlouble没有float。八个字节

        char:字符型,例:a(字符),abc(字符串),1个字节

        常用数据类型:int,float,char 

        2.2.2输出类型

        %d:输出整型

        %c:输出字符型

        %s:输出字符串

        %f:输出浮点数

        %u:输出无符号整型

        %p:输出目标地址

        2.2.3编码方式

                2.2.3.1溢出

        非负数以原码方式存放,负数以补码方式存放,非负数以原码直接输出,负数会将补码转换为原码再进行输出。每种类型的字符都有相应的存储字节,超出字节范围就会溢出,溢出值不会保存,所以选用类型时需要注意。

                2.2.3.2编码

        非负数以原码方式存放,负数以补码方式存放,非负数以原码直接输出,负数会将补码转换为原码再进行输出。如果将负数以%u输出,就会将负数的补码直接以原码方式输出,得到的结果会是类型的最大值减去负数绝对值的数。

        2.2.4进制转换

        进制转换是char字符里用到的,输入'\ddd'代表输入的是八进制数字,数字范围为0~7,可输入1~3个。输入'\xdd'为十六进制数字,\x是代表十六进制,数字范围为0~9,A~F,可输入1~2个。因为char字符的范围为0~127,所以八进制最大数为'\177',十六进制最大为'\x7F'。

2.3标准输入

        scanf:使用时要用&获取地址,并且地址类型要与输入匹配。

        getchar():如果scanf输入与地址类型不匹配,scanf不会获取输入,而是保存随机值,并将输入留在数据缓冲区,直到有相匹配的地址取走,而getchar()没有类型要求,可以直接将堵塞的数据取走,让后面的scanf获取之后的数据。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值