在linux环境下搭建嵌入式开发平台

发布时间:2024-07-26  

根据IEEE(电气和电子工程师协会)的定义,嵌入式系统是“控制、监视或者辅助装置、机器和设备运行的装置”(devices used to control, monitor, or assist the operation of equipment, machinery or plants)。从中可以看出嵌入式系统是软件和硬件的综合体,还可以涵盖机械等附属装置。目前国内一个普遍被认同的定义是:以应用为中心、以计算机技术为基础、软件硬件可裁剪、适应应用系统对功能、可靠性、成本、体积、功耗严格要求的专用计算机系统。一般的嵌入式系统都由以下几部分组成:
     1.特定的应用程序    比如QQ ,浏览器,游戏
     2.嵌入式库支持        比如标准C库,嵌入式qt库
     3.根文件系统            根文件系统是内核启动后挂载的第一个文件系统
     4.操作系统内核        Linux内核
     5.Bootloader            BootLoader就是在操作系统内核运行之前运行的一段小程序。通过这段小程序,可以初始化硬件设备、建立内存空间映射图,从而将系统的软硬件环境带到一个合适状态,以便为最终调用操作系统内核准备好正确的环境。Bootloader在嵌入式系统中的作用相当于x86机器中的BIOS和GRUB。比如u-boot

     6.硬件平台               Arm  mips powerpc

 

要搭建一个嵌入式开发平台必须具备以下工具:

1.嵌入式开发板,在这里我们使用三星的SMDK6410开发板,主控芯片S3C6410,而S3C6410采用的arm11架构
2.个人计算机,推荐使用redhat5.5操作系统

接下来搭建嵌入式交叉开发环境

一、 配置minicom

Minicom是一个运行在开发主机上的程序,通过这个程序可以观察开发主机串口的数据传输,首先用串口线把PC机的串口和开发板的串口连接,对于一个嵌入式设备来说,一般标准输入、标准输出、标准错误都是串口,所以这样的话我们就可以利用minicom来观察开发板的运行情况,并且还可控制开发板。详细的minicom配置过程如下:
在开发主机终端输入minicom –s,然后按照下面进行配置

#minicom-s

+-----[configuration]-- ------+

|Filenames and paths    |

|File transfer protocols  |

|Serial port setup           |

|Modem and dialing       |

|Screen and keyboard   |

|Save setup as dfl          |

|Save setup as..              |

|Exit                                 |

|Exit from Minicom         |

+-------------------------------------+

选择Serialport setup

设置参数如下:

+----------------------------------------------------+

| A - Serial Device : /dev/ttyS0      |

| B - Lockfile Location : /var/lock |

|C - Callin Program :                     |

|D - Callout Program :                   |

|E - Bps/Par/Bits : 115200 8N1     |

| F - Hardware Flow Control : No |

|G - Software Flow Control : No   |

| |

| Change which setting?               |

+---------------------------------------------------+

选择Savesetup as dfl设置保存为默认

+-----[configuration]---------+

|Filenames and paths       |

|File transfer protocols    |

|Serial port setup             |

| Modem and dialing        |

|Screen and keyboard      |

|Save setup as dfl             |

|Save setup as..               |

|Exit                                 |

|Exit from Minicom         |

+-------------------------------------+

最后选择Exit推出minicom,以后运行minicom只需要在主机终端中输入minicom即可

二、把u-boot-movi.bin写到SD卡

u-boot-movi.bin是一个已经编译好的bootloader,并且是SD卡启动的,也就是说这个程序要烧写到SD卡后才能运行。详细的SD卡烧写过程如下:
1 把SD卡插入PC机        
2 用fdisk –l查看SD卡对应的设备文件,一般为/dev/sdb
3卸载SD卡分区,umount /dev/sdb1
4 把u-boot-movi.bin写入SD卡,write_sd  /dev/sdb  u-boot-movi.bin  注:为write_sd工具所在的目录  
备注:(1)write_sd为smdk6410_lzy/tools文件夹下的工具write_sd.
(2)u-boot-movi.bin为smdk6410_lzy/images文件夹下的往sd卡里下载的uboot文件,注意写它的绝对路径。
5 把SD卡插入开发板,打开开发板电源,在minicom中观察SD卡启动过程,如启动正确则输出以下信息:

三、配置tftp服务

tftp服务是开发主机和开发板之间通信的一种方法,tftp客户端在bootloader中已经集成,tftp服务器在开发主机上,详细的tftp服务配置过程如下:
1打开tftp服务配置文件,vim /etc/xinetd.d/tftp,把该文件中disable对应的yes改为no     ,这样便打开了tftp服务
2重新启动tftp服务器,service xinetd restart    

四、把内核镜像下载到开发板的DDR内存中

1把zImage拷贝到tftp服务器的下载路径,cp  /zImage  /tftpboot    
2配置u-boot环境变量,在[u-boot-sd]#界面操作
[u-boot-sd]# set serverip 192.168.1.xxx(xxx代表开发主机的ip地址)
[u-boot-sd]# sav 保存环境变量
3下载内核到开发板并且启动内核, 在u-boot的终端操作
[u-boot-sd]# tftp 50008000 zImage    //把内核下载到开发板的内存中
[u-boot-sd]# bootm 50008000        //启动开发板中的linux内核
若启动成功的话LCD上会出现小企鹅
注意:zImage是已经编译好的linux内核镜像

五、配置nfs服务

nfs服务在linux下用来共享资源的,利用这个服务我们可以在开发主机上为开发板创建一个共享目录,让这个共享目录作为开发板的根文件系统,详细的配置过程如下:
1创建共享目录,mkdir /nfsroot
2 修改共享目录权限,chmod 777 /nfsroot
3打开nfs服务配置文件,vim /etc/exports,在该文件里添加:/nfsroot *(rw,sync,no_root_squash)
4重新启动nfs服务,service nfs restart

六、搭建根文件系统

根文件系统是linux内核启动后挂载的第一个文件系统,这个文件系统可以建立在开发板上,也可以建立在开发主机上,如果建立在开发主机上就叫做网络文件系统,在这里我们使用网络文件系统,搭建过程如下:
1 把已经做好的根文件系统解压到共享目录下,tar -xvf rootfs.tar -C /nfsroot
2 设置u-boot环境变量,告诉开发板根文件系统在网络上,等内核启动后挂载网络文件系统,这个操作需要在[u-boot-sd]#界面操作,如下:
[u-boot-sd]# set bootargs "root=/dev/nfs nfsroot=192.168.1.xxx:/nfsroot  ip=192.168.1.20  console=ttySAC0,115200"                     
[u-boot-sd]# sav 保存环境变量
3下载linux内核
[u-boot-sd]# tftp 50008000 zImage
4启动内核
[u-boot-sd]# bootm 50008000

若启动成功的话LCD会出现图形界面,并且在minicom中会出现shell终端如下:

[root@uplooking# ]


文章来源于:电子工程世界    原文链接
本站所有转载文章系出于传递更多信息之目的,且明确注明来源,不希望被转载的媒体或个人可与我们联系,我们将立即进行删除处理。

我们与500+贴片厂合作,完美满足客户的定制需求。为品牌提供定制化的推广方案、专属产品特色页,多渠道推广,SEM/SEO精准营销以及与公众号的联合推广...详细>>

利用葫芦芯平台的卓越技术服务和新产品推广能力,原厂代理能轻松打入消费物联网(IOT)、信息与通信(ICT)、汽车及新能源汽车、工业自动化及工业物联网、装备及功率电子...详细>>

充分利用其强大的电子元器件采购流量,创新性地为这些物料提供了一个全新的窗口。我们的高效数字营销技术,不仅可以助你轻松识别与连接到需求方,更能够极大地提高“闲置物料”的处理能力,通过葫芦芯平台...详细>>

我们的目标很明确:构建一个全方位的半导体产业生态系统。成为一家全球领先的半导体互联网生态公司。目前,我们已成功打造了智能汽车、智能家居、大健康医疗、机器人和材料等五大生态领域。更为重要的是...详细>>

我们深知加工与定制类服务商的价值和重要性,因此,我们倾力为您提供最顶尖的营销资源。在我们的平台上,您可以直接接触到100万的研发工程师和采购工程师,以及10万的活跃客户群体...详细>>

凭借我们强大的专业流量和尖端的互联网数字营销技术,我们承诺为原厂提供免费的产品资料推广服务。无论是最新的资讯、技术动态还是创新产品,都可以通过我们的平台迅速传达给目标客户...详细>>

我们不止于将线索转化为潜在客户。葫芦芯平台致力于形成业务闭环,从引流、宣传到最终销售,全程跟进,确保每一个potential lead都得到妥善处理,从而大幅提高转化率。不仅如此...详细>>