<p>一、裸机开发的一般流程<p>注意:这是假定你已经搭建好了裸机开发环境<p>我们裸机的一般开发流程:图1-1:<p><img src="https://6.eewimg.cn/news/uploadfile/2024/1031/.png" alt="" class="medium-zoom-image"/><p>图1-1 裸机开发流程<p>由于在这篇文章里是体验裸机程序,所以我们跳过了1、2步骤。直接从第三步开始:<p>二、交叉工具链的安装:<p>在这里,我们编写的程序是要在开发板运行的,不是在pc机,所以pc机的gcc等编译器不再适用了,我们必须按照交叉工具链。由于我们的程序是要在ARM架构运行的。所以安装的工具链是arm-linux-*的工具链。<p>我们的工具链包放在/home/ARM-tools里的:arm-linux-gcc-4.3.2.tgz。如图1-2:<p><img src="https://6.eewimg.cn/news/uploadfile/2024/1031/.png" alt=""/><p>图1-2<p>接下来是解压,就是安装,我们把它解压到/usr/local目录下:使用的命令是:<p>tar -zxvf arm-linux-gcc-4.3.2.tgz -C /<p>该命令的意思是将该工具包解压到根目录。由于它加压开的文件夹是/usr/local/arm/4.3.2…所以我们解压后会在/usr/local/下看见有新的文件夹arm:如图1-3:<p>解压命令:<p><img src="https://6.eewimg.cn/news/uploadfile/2024/1031/.png" alt="" class="medium-zoom-image"/><p>回车:<p><img src="https://6.eewimg.cn/news/uploadfile/2024/1031/.png" alt="" class="medium-zoom-image"/><p>图1-3 安装工具包<p>我们从上面的回显看到安装的目录确实是/usr/local/arm。<p>安装好了之后,我们会在/usr/local/arm目录下看到4.3.2的工具链文件夹,这就是我们交叉编译的工具集。里面有很多arm-linux-开头的编译器,包括arm-linux-gcc,arm-linux-g++。这两个就是交叉编译C和C++的工具。如图1-4:<p><img src="https://6.eewimg.cn/news/uploadfile/2024/1031/.png" alt="" class="medium-zoom-image"/><p>图1-4交叉工具链<p>三、交叉工具链的配置:<p>上面我们只是将交叉工具链解压安装而已,我们现在还不能用这些交叉工具链,因为我们还没有配置环境。如果我们现在在命令行执行:arm-linux-gcc会报错:图1-5:<p><img src="https://6.eewimg.cn/news/uploadfile/2024/1031/.png" alt="" class="medium-zoom-image"/><p>图1-5<p>接下来配置这些工具链,使我们能够在命令行使用他们。配置的文件是在/etc/profile.打开该文件,添加工具链的路径即可:<p>export PATH=$PATH:/usr/local/arm/4.3.2/bin/<p>然后保存,使能我们刚配置的环境:source /etc/profile<p>这样我们就配置好交叉工具链。如下图1-6:<p><img src="https://6.eewimg.cn/news/uploadfile/2024/1031/.png" alt="" class="medium-zoom-image"/><p><img src="https://6.eewimg.cn/news/uploadfile/2024/1031/.png" alt="" class="medium-zoom-image"/><p>图1-6使能交叉工具链环境<p>测试一下环境:安装成功,图1-7:<p><img src="https://6.eewimg.cn/news/uploadfile/2024/1031/.png" alt="" class="medium-zoom-image"/><p>图1-7<p>四、裸机体验:<p>接下来就是我们用编写好的裸机程序来测试一下我们的交叉工具链。<p>这里我们提供了一个点亮led的汇编文件程序:图1-8:<p><img src="https://6.eewimg.cn/news/uploadfile/2024/1031/.png" alt="" class="medium-zoom-image"/><p>图1-8<p>在这里我们的源程序就两个,一个是led.lds链接脚本文件,一个汇编文件led.S。<p>编译汇编文件,产生二进制.o文件,图1-9:<p><img src="https://6.eewimg.cn/news/uploadfile/2024/1031/.png" alt="" class="medium-zoom-image"/><p>图1-9 编译<p>链接文件,产生.elf文件,图1-10:<p><img src="https://6.eewimg.cn/news/uploadfile/2024/1031/.png" alt="" class="medium-zoom-image"/><p>图1-10 链接文件<p>但是此时产生的文件是elf格式的,不是可执行的二进制文件。我们需要将elf文件转为可以在开发板执行的.bin文件。图1-11:<p><img src="https://6.eewimg.cn/news/uploadfile/2024/1031/.png" alt="" class="medium-zoom-image"/><p>图1-11 生成bin可执行文件<p>上面我们终于把一个文件编程了可执行文件即是.bin文件。但是步骤有点繁琐,当我们一个文件需要修改的时候,又得重新编译一次。所以,我们不得不编写我们的Makefile文件。<p> <p>由于我们现在只是体验裸机程序烧写到开发板。所以会在后面讲解:<ol style="margin-bottom: 1em; margin-left: 57pt; padding: 0px; color: rgb(51, 51, 51); font-family: 'PingFang SC', 'Microsoft YaHei', 'Helvetica Neue', Helvetica, Arial, sans-serif; font-size: 14px; text-wrap: wrap; background-color: rgb(255, 255, 255);" class=" list-paddingleft-2"><li><p>交叉工具链的使用</p></li><li><p>链接器脚本的编写</p></li><li><p>Makefile的编写。</p></li></ol><p> </p><p>现在我们把上面生成的bin可执行文件裸机程序烧写到开发板,看效果:<p>注意我们烧写到开发板的NandFlash的。<p>烧写裸机程序:<p>1、首先是把我们的SD卡插入到SD卡读卡器,并且插入电脑的usb口。图2-1:<p><img src="https://6.eewimg.cn/news/uploadfile/2024/1031/.jpg" alt="" class="medium-zoom-image"/><p> <p><img src="https://6.eewimg.cn/news/uploadfile/2024/1031/.jpg" alt="" class="medium-zoom-image"/><p>图2-1 SD卡<p>2.打开我的电脑,右键SD卡盘符,选择格式化SD卡,点击开始,会有警告提示,选确定进行格式化SD卡。格式化完成会提示格式化完成,点确定即可。图2-2:<p><img src="https://6.eewimg.cn/news/uploadfile/2024/1031/.png" alt="" class="medium-zoom-image"/><p>图2-2格式化SD卡<p><img src="https://6.eewimg.cn/news/uploadfile/2024/1031/.png" alt="" class="medium-zoom-image"/><p><img src="https://6.eewimg.cn/news/uploadfile/2024/1031/.png" alt="" class="medium-zoom-image"/><p>图2-2 格式化SD卡<p>3.格式化好了SD卡,就是烧写我们的SD卡引导程序。首先是打开烧写软件。我的是在F:forfish资料OK6410-A基础资料-256 (H)Linux-3.0.1Linux烧写工具目录下:图2-3:<p><img src="https://6.eewimg.cn/news/uploadfile/2024/1031/.png" alt="" class="medium-zoom-image"/><p>图2-3<p>双击上面的SD_Writer.exe软件,会出现下图2-4.<p><img src="https://6.eewimg.cn/news/uploadfile/2024/1031/.png" alt="" class="medium-zoom-image"/><p>图2-4<p>4.然后点击界面右上角的Scan键,会自动检测到我们的SD卡,SD Volume会显示你SD卡的盘符。Board Model是6410(我的是6410)。SD Type选Auto默认即可。OS Type也是默认Linux||Android。然后点击左下角的Select Boot。会出现一个界面,找到SD卡烧写程序mmc_ram256.bin(我的是256的),点选择。最后点击Program进行烧写。烧写成功会出现It is OK!. 图2-5:<p> <p><img src="https://6.eewimg.cn/news/uploadfile/2024/1031/.png" alt="" class="medium-zoom-image"/><p><img src="https://6.eewimg.cn/news/uploadfile/2024/1031/.png" alt="" class="medium-zoom-image"/><p>图2-5<p>这就显示我们烧写好了SD程序。<p><br/><p>5.退出usb,拔出SD卡,插入到开发板的SD卡插槽。图2-6:<p><img src="https://6.eewimg.cn/news/uploadfile/2024/1031/.jpg" alt="" class="medium-zoom-image"/><p>图2-6<p>6.在我们给开发板上电之前,我们需要去设置我们pc机的端口,我们这里使用的是串口软件SecureCRT.exe。打开该软件后,创建一个新的serial端口,参数如下,名字com1.图2-7.<p><img src="https://6.eewimg.cn/news/uploadfile/2024/1031/.png" alt="" class="medium-zoom-image"/><p>点击新建,然后选择Serial.<p> <p><img src="https://6.eewimg.cn/news/uploadfile/2024/1031/.png" alt="" class="medium-zoom-image"/><p>端口选择COM1,波特率,数据位8位,奇偶校验None,停止位1.取消流控的选择。然后点下一步。<p> <p><img src="https://6.eewimg.cn/news/uploadfile/2024/1031/.png" alt="" class="medium-zoom-image"/><p>点确定即可。<p> <p> <p> <p> <p> <p> <p> <p>这样我们就创建好了端口COM1:<p><img src="https://6.eewimg.cn/news/uploadfile/2024/1031/.png" alt="" class="medium-zoom-image"/><p>如上,我们选择COM1,点连接,即可通过串口连接开发板:<p><img src="https://6.eewimg.cn/news/uploadfile/2024/1031/.png" alt="" class="medium-zoom-image"/><p>图2-7端口<p> <p> <p> <p> <p>7.接下来就是设置开发板从SD卡启动。图2-8:<p>1---8好开关引脚:off-off-off-on-on-on-on-on:<p><img src="https://6.eewimg.cn/news/uploadfile/2024/1031/.jpg" alt="" class="medium-zoom-image"/><p>图2-8<p>8.最后给开发板上电,串口显示:图2-9:<p><img src="https://6.eewimg.cn/news/uploadfile/2024/1031/.png" alt="" class="medium-zoom-image"/><p>图2-9 串口显示信息<p>9.选择1 Format the nand flash。格式化Nand Flash图2-10:<p> <p><img src="https://6.eewimg.cn/news/uploadfile/2024/1031/.png" alt="" class="medium-zoom-image"/><p>然后选择y:<p><img src="https://6.eewimg.cn/news/uploadfile/2024/1031/.png" alt="" class="medium-zoom-image"/><p> <p>选择3 Burn image from USB.<p><img src="https://6.eewimg.cn/news/uploadfile/2024/1031/.png" alt="" class="medium-zoom-image"/><p>选择1 Flash u-boot:<p><img src="https://6.eewimg.cn/news/uploadfile/2024/1031/.png" alt="" class="medium-zoom-image"/><p>图2-10 烧写<p>10.接下来才是到了我们烧写我们前面生成的led.bin点亮led的程序。<p>首先是将usb从windows 7拉到虚拟机的Redhat 6.4.右击vbox右下角的usb,会看到图2-11:然后鼠标点击选择该usb,选择之后,再次看,会发现这个usb前面多了一个对勾。这样usb就从windows 7 被我拉到了Redhat 6.4.这样我们就可以进行led.bin的烧写了。<p><img src="https://6.eewimg.cn/news/uploadfile/2024/1031/.jpg" alt="" class="medium-zoom-image"/><p><img src="https://6.eewimg.cn/news/uploadfile/2024/1031/.jpg" alt="" class="medium-zoom-image"/><p>图2-11 usb连接<p>12.烧写程序之前,要先装usb烧写的驱动程序:dnw_usb.ko。安装命令:<p>Insmod dnw_usb.ko<p>安装截图2-12:<p><img src="https://6.eewimg.cn/news/uploadfile/2024/1031/.png" alt="" class="medium-zoom-image"/><p>图2-12<p>如上我们就安装好了usb烧写驱动。接下来就是到了真正烧写led.bin程序了。<p> <p>13.把生成的led.bin拷贝到dnw所在的目录,就是截图2-12的那个目录。然后执行:<p>https://www.eeworld.com.cn/mcu/dnw led.bin <p>执行的结果如下图2-13:<p> <p> <p> <p> <p> <p>拷贝:<p><img src="https://6.eewimg.cn/news/uploadfile/2024/1031/.png" alt="" class="medium-zoom-image"/><p>执行:<p><img src="https://6.eewimg.cn/news/uploadfile/2024/1031/.png" alt="" class="medium-zoom-image"/><p>图2-13 执行结果<p>串口的反馈信息图2-14:<p><img src="https://6.eewimg.cn/news/uploadfile/2024/1031/.png" alt="" class="medium-zoom-image"/><p>图2-14 烧写<p>可以看到我们烧写了bytes到了内存里。<p> <p>14.查看是否烧写成功,就是程序有没在开发板顺利运行。我们设置开发板从Nand Flash启动,然后重启。<p>Nand Flash启动:1-8:off-off-off-on-on-off-off-on即可。然后按动重启键。如下图2-15:<p><img src="https://6.eewimg.cn/news/uploadfile/2024/1031/.jpg" alt="" class="medium-zoom-image"/><p>图2-15 设置Nand Flash启动, 点亮led<p>我们来看一下程序:<p><img src="https://6.eewimg.cn/news/uploadfile/2024/1031/.png" alt=""/><p>我们看到我们在汇编里给第一个灯的值赋为0,因为0xe=0b1110,就是第一个灯亮。说明我们烧写成功。<p>呼呼,终于烧写完成,呼呼……………………..<p><br/> <p>推荐阅读<span style="float: right;font-weight:normal;">最新更新时间:2024-11-14 16:05</span></p>
讯享网

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容,请联系我们,一经查实,本站将立刻删除。
如需转载请保留出处:https://51itzy.com/kjqy/205060.html