查看: 2765|回复: 5

学习嵌入式的点点滴滴

[复制链接]
  • TA的每日心情
    开心
    2014-4-11 10:00
  • 签到天数: 67 天

    连续签到: 1 天

    [LV.6]常住居民II

    发表于 2013-8-26 10:53:50 | 显示全部楼层 |阅读模式
    分享到:
    已经快2周了,我每天都在关注这个作者的博文。随着时间流逝,博主的文章越发感触着我。为了让更多人知晓共同学习,今天在这里果断转载,还望博主看到不要怪罪。

    第一篇:
    大学已经读了三年了,摸爬滚打,才刚刚开始接触嵌入式,以及相关的linux操作系统,还有好多好多的不懂,在学习过程中,我也会不间断的将自己学到的,领悟的,还有不懂的,拿出来与大家共同讨论,希望经验丰富者能给与我们一些好的建议与意见,我也想与更多的初学者一起共同进步,共同去开阔中国的嵌入式领域。

    是很简单的叙述,足以看到作者的真诚!

    第二篇(正式开始写了):
    一看完计算机概论,发现以前对计算机的了解只是皮毛
    CPU种类的区别:精简指令集:每个指令的执行时间短,执行性能佳,但要做复杂的事情需由多个指令完成:复杂指令集:执行花费时间长,但每条指令可处理的工作较丰富。
    x86架构计算机为32位,x64架构为64位。
    主板上的芯片通过两个桥连接的:北桥负责连接速度较快的CPU、内存、显卡;南桥负责速度较慢的周边接口,如硬盘,USB,网卡。
    CPU的频率由外频和倍频相乘得来,外频是CPU与外部组件进行数据传输的速度,倍频则是CPU内部用来加速工作性能的一个倍数。频率是CPU每秒钟可以进行的工作次数。
    内存:所有的数据都需要加载到内存才能够被CPU读取,内存越大,所能加载的数据越多。选择计算机,CPU与内存的外频相同最佳。当然,除了内存之外,CPU也自带‘内存’,称为第二层高速缓冲,不需要经过北桥,提升了CPU性能。内存断电清空。
    BIOS程序写到了ROM里,现在通常写入闪存或EEPROM.
    显卡的内存和频率关系到CPU的性能,和显示界面的清晰度。
    硬盘的转速决定了数据读取速度。
    PCI适配卡:通过PCI接口传输的,比如:网卡,声卡。
    电源的选择对于主机的性能也相当重要,稳定度不同。
    计算机是以二进制数据传输的,比如汉字,是通过16位二进制码进行表示,可以表示达到6万多个中文字。
    机器程序让计算机有了生命,科学家发明了编译器,让人类看得懂的程序语言转换成计算机语言。
    操作系统的角色:

    1.gif
    操作系统必须要能够驱动硬件,如此应用程序才能够使用该硬件功能。
    (二)linux的发展历史
    在70年代,有了老大哥UNIX,但早些的的unix只能与服务器或者大型工作站划上等号,后来AT&T推出system V第七版unix可以支持x86架构的个人计算机,当时unix版权被收回,内核源码不公布,谭宁邦教授为了教导学习认识unix,便编写minix这个unix like 的内核程序。
    1984年史托曼发起的GUN项目,为创建一个自由、开放的unix操作系统,但这谈何容易,于是史托曼开始编写在unix上运行的小程序,发现不论什么软件都需要编译成二进制文件,便开始编写c语言的编译程序,于是就有了现在的GUN C Compiler(gcc)。在自由、开放的影响下,托瓦茨编写了自己的内核程序,并将程序放在BBS上供大家下载讨论,这引起了广大志愿者的参与,不停的完善linux。
    linux的内核版本:如奇数2.5xx,为开发中版本,如偶数2.6xx为稳定版本。
    (三)linux如何学习
    linux有两种主要的操作模式,分别是图形界面和命令行界面。如果想深入学习linux,最好使用命令行界面。
    linux操作系统可运用于很多环境,在此就不多说了。
    我自己都还没开始学习,没有资格和大家分享这些,不过鸟哥书里有几个网站我觉得可能用的上,推荐给大家:http://vbird.dic.ksu.edu.tw/linux_basic/linux_basic.php#part2
          http://www.study-area.org/menu1.htm
          http://phorum.study-area.org/index.php/board,13.30.html

    我会坚持学下去,并且分享给大家的。


    作者写的很透彻,更可贵的是还给出自己自己学习使用到的网站。作者Fighting!



    回复

    使用道具 举报

  • TA的每日心情
    开心
    2014-4-11 10:00
  • 签到天数: 67 天

    连续签到: 1 天

    [LV.6]常住居民II

     楼主| 发表于 2013-8-26 10:58:37 | 显示全部楼层
    继续:
    第三篇
    今天用了大半天装虚拟机,安装centos,到现在还正在尝试通过u盘安装linux,估计这次能成功了吧,如果成功了,我会在明天把具体的安装过程上传的,供大家参考,也希望大家能够支持我
    今天先对上午学到的一点点知识做一下总结
    —————在linux操作系统安装之前,需要知道的一些内容
    以我们现在的个人计算机的性能应该可以支持linux完成大部分用途,而中型以上linux服务器需要更高的配置。。。
    首先要明白的是:各个组件或设备在linux下面都是一个文件

    1.png

    对磁盘分区:磁盘的第一扇区主要记录了两个重要的资讯,分别是: 主要启动记录区(Master Boot Record, MBR):可以安装启动管理程序的地方,有446 bytes
    分割表(partition table):记录整颗硬盘分割的状态,有64 bytes

    MBR是很重要的,因为当系统在启动的时候会主动去读取这个区块的内容,这样系统才会知道你的程序放在哪里且该如何进行启动。
    分割表,记录了磁盘如何分割的信息,最多只能分割四个分区。
    2.png
    在上图当中,我们知道硬盘的四个分割记录区仅使用到两个,P1为主要分割,而P2则为扩展分配。请注意, 扩展分配的目的是使用额外的磁区来记录分割资讯,扩展分配本身并不能被拿来格式化。 然后我们可以透过扩展分配所指向的那个区块继续作分割的记录。
    -主要分割与扩展分配最多可以有四笔(硬盘的限制)
    -扩展分配最多只能有一个(操作系统的限制)
    -逻辑分割是由扩展分配持续切割出来的分割槽;
    -能够被格式化后,作为数据存取的分割槽为主要分割与逻辑分割。扩展分配无法格式化;
    -逻辑分割的数量依操作系统而不同,在Linux系统中,IDE硬盘最多有59个逻辑分割(5号到63号), SATA硬盘则有11个逻辑分割(5号到15号)。

    简单的说,整个启动流程到操作系统之前的动作应该是这样的:
    1、BIOS:启动主动运行的韧体,会认识第一个可启动的装置;
    2、MBR:第一个可启动装置的第一个磁区内的主要启动记录区块,内含启动管理程序;
    3、启动管理程序(boot loader):一支可读取核心文件来运行的软件;
    4、核心文件:开始操作系统的功能...

    书上还提到了一些linux能够完成的服务任务:
    NAT(达成IP分享器的功能)
    SAMBA(加入Windows网络上的邻居)
    Mail(邮件服务器)
    Web(WWW服务器)
    DHCP(提供用户端自动取得IP的功能)
    Proxy(代理服务器)FTP


    说明一下基本硬盘分割的模式吧! 最简单的分割方法:
    仅分割出根目录与内存置换空间( / & swap )即可。 然后再预留一些剩余的磁碟以供后续的练习之用。不过,这当然是不保险的分割方法!因为如果任何一个小细节坏掉(例如坏轨的产生),你的根目录将可能整个的损毁~挽救方面较困难!

    稍微麻烦一点的方式:
    较麻烦一点的分割方式就是先分析这部主机的未来用途,然后根据用途去分析需要较大容量的目录, 以及读写较为频繁的目录,将这些重要的目录分别独立出来而不与根目录放在一起, 那当这些读写较频繁的磁盘分区槽有问题时,至少不会影响到根目录的系统数据,那挽救方面就比较容易啊! 在默认的CentOS环境中,底下的目录是比较符合容量大且(或)读写频繁的目录罗:
    • /
    • /usr
    • /home
    • /var
    • Swap
    具体每个盘符的大小,可以不那么吝啬,稍微给多一点,不过鸟哥建议预留一些剩余的磁碟以供后续的练习之用
    好啦,现在要开始蛋疼的linux安装旅程了,总是碰壁,但我觉得就快成功啦


    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    2014-4-11 10:00
  • 签到天数: 67 天

    连续签到: 1 天

    [LV.6]常住居民II

     楼主| 发表于 2013-8-26 11:02:17 | 显示全部楼层
    板凳继续上文:
    四:
    大家好,抽出一点时间写一下今天的学习笔记,这几天感觉自己挺认真的,晚上决定奖励自己去看场电影
    (本想把自己的linux安装方法上传的,想想还是算了,网上有太多太多这样的教程啦,在这里提一个小的建议,就是像我一样的新手,在虚拟机中安装linux,最好最好能将iso镜像刻录成光盘,也就花个几块钱,这样可以通过光盘进行安装,也省去了不少迷惑,比如在安装过程中,可以自己分区,自己设定参数。。。。但如果没有通过光盘进行安装,虚拟机将为你设定好一切,可能有一些不会让你满意;还有就是不要想着用u盘在虚拟机里进行linux操作系统的安装了,昨天纠结了两个多小时,最后还是失败告终,如果有人可以的话,也希望能无私的奉献出来;总之,我还是推荐刻录成光盘再安装)

    今天,我开始使用linux操作系统了,迷惑减少了一些,吸引我的还是命令行界面,轻轻的敲下键盘,就可以完成很多工作

    图形界面和命令行界面的切换:ctrl+alt+F1~F6:文字界面登陆
                                              ctrl+alt+F7:图形界面桌面
    进入之后的界面:输入用户名和密码就可以啦,password输入是显示不出来的
    CentOS release 5.3 (Final) Kernel 2.6.18-128.el5 on an i686  
    www login: vbird
    Password:
    [vbird@www ~]$ _
    如果你输入的用户名为root,这样你就拥有超级权限了,听起来好棒啊,不过不要轻易使用。
    如果想退出,在命令行输入exit就好啦。
    一些基础的命令:
    显示日期与时间的命令:date
    显示日历的命令:cal
    简单好用的计算器:bc
    大家登陆后可以试一下,看一下是什么效果。注意:命令的大小写是有区别的。

    重要的热键:tab,ctrl+c,ctrl+d
    tab按键:就是在你忘记命令或文件名时,按tab会补齐他们,比如:只记得cal中的ca,那么她会将有关的显示出来
    [vbird@www ~]$ ca[tab][tab]   
    cadaver             callgrind_control   capifax             card cal               
    cameratopam         capifaxrcvd         case caller              cancel              
    capiinfo            cat callgrind_annotate  cancel.cups         captoinfo         
    catchsegv

    ctrl+c:如果程序在不停的运行,那ctrl+c就可以让他停下来  ctrl+d与上面提到的exit功能一样
    如果你输入错误,linux也会给你相应的提示的。

    linux系统的在线求助 man page和info page:看完这个之后,我发现英语这门语言,还得再好好看看!!
    每一条指令都可以通过man查询她的功能,比如man date
    显示的内容我就不放上来了,总之是各种功能,使用方法,还有作者。。。
    info page性质和man差不多,在这里就不陈述了。
    man指令很重要哦,英语也很重要哦!

    关机的命令也有很多:shutdown,poweroff,halt,init 0   重启:reboot
    当然这些指令还有很多细节,比如延时关机,关机前显示信息。。。如果感兴趣可以上网查一下。
    注意:这些操作都需要在超级权限下操作的,登陆用户名为root

    考虑到运行速度,有些数据不会写回硬盘,而是暂留在内存里,需要时从内存读取,加快速度,这个时候关机就需要 sync:数据同步写入磁盘,在关机之前,最好执行下这个指令,将在内存里的数据写入磁盘里,以免断电丢失。


    到此,作者更新的博文,我已全数转载了,后续文章,我将紧随作者脚步,希望大家也一起来学习。



    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    奋斗
    2014-7-16 09:10
  • 签到天数: 361 天

    连续签到: 1 天

    [LV.8]以坛为家I

    发表于 2013-8-27 08:44:42 | 显示全部楼层
    真好。真希望我们论坛网友也自己写写
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    2020-6-9 13:54
  • 签到天数: 297 天

    连续签到: 1 天

    [LV.8]以坛为家I

    发表于 2013-8-27 08:52:09 | 显示全部楼层
    好东西。。。。。。
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    2014-4-11 10:00
  • 签到天数: 67 天

    连续签到: 1 天

    [LV.6]常住居民II

     楼主| 发表于 2013-9-3 14:16:14 | 显示全部楼层
    本帖最后由 laoliu 于 2013-9-3 14:17 编辑

    今天继续更新
    五:
    继续我这几天学习的总结吧。
    linux一般将文件可存取访问的身份分为3个类别,分别是owner(用户),group(用户组),others(其他),且3种身份各有read,write,execute等权限。
    11111.png

    chgrp:改变文件所属用户组
    chown:改变文件所有者
    chmod:改变文件的权限
    可以通过 chmod 777 .bashrc 改变其文件权限,权限也可以通过下面改变:


    2.png
    对于文件:
    r(read):可读取此文件的实际内容
    w(write):可以编辑、新增或者修改该文件的内容(但不能删除该文件)
    x(execute):该文件具有可以被系统执行的权限
    对于目录:
    r:具有读取目录结构列表的权限
    w:具有更改该目录结构列表的权限
          新建新的文件与目录
          删除已经存在的文件与目录
          将已存在的文件与目录进行重命名
          转移该目录的文件,目录位置
    x:目录不可被执行,目录的x代表的是用户能否进入该目录成为工作目录的用途,所谓的工作目录就是你目前所在的目录。变换目录的命令:cd
    权限的问题还需要深入的研究。。。
    绝对路径:由根目录(/)开始写起的文件名或目录名称
    相对路径:相对于目前路径的文件名写法。
    . :代表当前的目录,也可以用./来表示
    .. :代表上一层目录,也可以用../来表示
    linux有自己特定的标准,也就是文件需放入指定的目录中,方便查阅

    处理目录:
    .                  代表此层目录
    ..          代表上一层目录
    -           代表前一个工作目录
    ~          代表『目前使用者身份』所在的家目录
    ~account  代表 account 这个使用者的家目录(account是个帐号名称)

    pwd:显示目前的目录
    cd:变换目录

    mkdir:创建一个新的目录

    rmdir:删除一个空的目录(只能删除‘空’的目录)

    每个指令都有相应的功能,在这里就不一一写出了,可以使用man查询哦

    关於运行档路径的变量: $PATH

    范例:先用root的身份列出搜寻的路径为何?
    [root@www ~]#echo
    $PATH/usr/kerberos/sbin:/usr/kerberos/bin:/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin  <==这是同一行!范例:用vbird的身份列出搜寻的路径为何?
    [root@www ~]# su - vbird[vbird@www ~]# echo $PATH/usr/kerberos/bin:/usr/local/bin:/bin:/usr/bin:/home/vbird/bin# 仔细看,一般用户vbird的PATH中,并不包含任何『sbin』的目录存在喔!

    。不同身份使用者默认的PATH不同,默认能够随意运行的命令也不同(如root与vbird);
    。PATH是可以修改的,所以一般使用者还是可以透过修改PATH来运行某些位於/sbin或/usr/sbin下的命令来查询;
    。使用绝对路径或相对路径直接指定某个命令的档名来运行,会比搜寻PATH来的正确;
    。命令应该要放置到正确的目录下,运行才会比较方便;
    。本目录(.)最好不要放到PATH当中。

    文件与目录的检视: ls
    [root@www ~]# ls [-aAdfFhilnrRSt] 目录名称
    -a  :全部的文件,连同隐藏档( 开头为 . 的文件) 一起列出来(常用)
    -d  :仅列出目录本身,而不是列出目录内的文件数据(常用)
    -l  :长数据串列出,包含文件的属性与权限等等数据;(常用)

    复制、删除与移动: cp, rm, mv
    [root@www ~]# cp [-adfilprsu] 来源档(source) 目标档(destination)
    在默认的条件中, cp                  的来源档与目的档的权限是不同的,目的档的拥有者通常会是命令操作者本身。

    rm  (移除文件或目录)

    mv  (移动文件与目录,或更名)

    [root@www tmp]# mv mvtest mvtest2 <== 这样就更名了!简单~

    取得路径的文件名称与目录名称 :
    [root@www ~]# basename /etc/sysconfig/network
    network         <== 很简单!就取得最后的档名~
    [root@www ~]# dirname /etc/sysconfig/network
    /etc/sysconfig  <== 取得的变成目录名了!

    文件内容查阅:

    cat   由第一行开始显示文件内容tac   从最后一行开始显示,可以看出 tac 是 cat 的倒著写!nl   显示的时候,顺道输出行号!more 一页一页的显示文件内容less 与 more 类似,但是比 more 更好的是,他可以往前翻页!head 只看头几行tail 只看尾巴几行od     以二进位的方式读取文件内容!

    修改文件时间或建置新档: touch
    modification time (mtime)
                    当该文件的『内容数据』变更时,就会升级这个时间!内容数据指的是文件的内容,而不是文件的属性或权限喔!

    status time (ctime)
                    当该文件的『状态 (status)』改变时,就会升级这个时间,举例来说,像是权限与属性被更改了,都会升级这个时间啊。   

    access time (atime)
                    当『该文件的内容被取用』时,就会升级这个读取时间 (access)。举例来说,我们使用 cat 去读取 /etc/man.config ,                就会升级该文件的 atime 了。
    [root@www ~]# touch [-acdmt] 文件
    选项与参数:
    -a  :仅修订 access time;
    -c  :仅修改文件的时间,若该文件不存在则不创建新文件;
    -d  :后面可以接欲修订的日期而不用目前的日期,也可以使用 --date=\"日期或时间\"
    -m  :仅修改 mtime ;
    -t  :后面可以接欲修订的时间而不用目前的时间,格式为[YYMMDDhhmm]

    文件默认权限:umask
    若使用者创建为『文件』则默认『没有可运行( x )权限』,亦即只有 rw 这两个项目,也就是最大为                          666 分,默认权限如下:
    -rw-rw-rw-


    若使用者创建为『目录』,则由於 x 与是否可以进入此目录有关,因此默认为所有权限均开放,亦即为                          777 分,默认权限如下:
    drwxrwxrwx

    要注意的是,umask 的分数指的是『该默认值需要减掉的权限!』因为                  r、w、x 分别是 4、2、1 分,所以罗!也就是说,当要拿掉能写的权限,就是输入 2                  分,而如果要拿掉能读的权限,也就是 4 分,那么要拿掉读与写的权限,也就是 6                  分,而要拿掉运行与写入的权限,也就是 3 分

    chattr (配置文件隐藏属性)
    lsattr (显示文件隐藏属性)

    文件特殊权限:         SUID, SGID, SBIT
    4 为 SUID
    2 为 SGID
    1 为 SBIT

    观察文件类型:file

    which (寻找『运行档』)
    whereis 、locate、find(寻找特定文件)
    使用 locate 来寻找数据的时候特别的快,                这是因为 locate 寻找的数据是由『已创建的数据库 /var/lib/mlocate/』                里面的数据所搜寻到的,所以不用直接在去硬盘当中存取数据

    权限与命令间的关系:
    一、


    让使用者能进入某目录成为『可工作目录』的基本权限为何:


    • 可使用的命令:例如 cd 等变换工作目录的命令;
    • 目录所需权限:使用者对这个目录至少需要具有 x 的权限
    • 额外需求:如果使用者想要在这个目录内利用 ls 查阅档名,则使用者对此目录还需要 r 的权限。
    二、使用者在某个目录内读取一个文件的基本权限为何?

    • 可使用的命令:例如本章谈到的 cat, more, less等等
    • 目录所需权限:使用者对这个目录至少需要具有 x 权限;
    • 文件所需权限:使用者对文件至少需要具有 r 的权限才行!
    三、让使用者可以修改一个文件的基本权限为何?

    • 可使用的命令:例如 nano 或未来要介绍的 vi 编辑器等;
    • 目录所需权限:使用者在该文件所在的目录至少要有 x 权限;
    • 文件所需权限:使用者对该文件至少要有 r, w 权限
    四、让一个使用者可以创建一个文件的基本权限为何?

    • 目录所需权限:使用者在该目录要具有 w,x 的权限,重点在 w 啦!
    五、让使用者进入某目录并运行该目录下的某个命令之基本权限为何?

    • 目录所需权限:使用者在该目录至少要有 x 的权限;
    • 文件所需权限:使用者在该文件至少需要有 x 的权限


    回复 支持 反对

    使用道具 举报

    您需要登录后才可以回帖 注册/登录

    本版积分规则

    关闭

    站长推荐上一条 /4 下一条



    手机版|小黑屋|与非网

    GMT+8, 2024-12-12 10:44 , Processed in 0.171145 second(s), 25 queries , MemCache On.

    ICP经营许可证 苏B2-20140176  苏ICP备14012660号-2   苏州灵动帧格网络科技有限公司 版权所有.

    苏公网安备 32059002001037号

    Powered by Discuz! X3.4

    Copyright © 2001-2024, Tencent Cloud.