[初级教程]搭建arm-linux裸机开发的环境

最新更新时间:2022-04-21来源: eefocus关键字:arm-linux  裸机开发  环境 手机看文章 扫描二维码
随时随地手机看文章

1.前言

在上一遍的文章中,我介绍了如何设置芯片的启动模式,根据三星的官方主推的IROM模式,介绍了如何从IROM模式启动,并从Nand中加载我们的引导程序,有了一些前面的知识铺垫后,这一篇文章,我将进一步深入,教你如何实现你的引导程序,并搭建一个调试引导程序的实验环境。这里我介绍两种方式,这两种方式各有前提条件,具体如下:


2.开发环境的搭建

开发环境其实大同小异,总结一下用到的几个:


windows主机

vmware虚拟机

在vmware虚拟机中安装ubuntu桌面操作系统或者redhat或者debain或者centOS均可,看你自己习惯

调试工具(H-JTAG或者J-link)

H-JTAG和J-link的调试搭建环境不太一样,有区别,详细见下面


使用H-JTAG作为开发工具的


有H-jtag调试器,USB接口的那种

准备H-JTAG软件用到的配置文件,以及驱动文件,如果H-JTAG的官方已经支持了你的nandflash或者Norflash,那么很幸运,你不需要去写这样的配置文件,如果你像我一样用的是H-JTAG的官方还没有支持的,那就得我们自己写配置文件和初始化脚本

拿我的开发板来说,我用iROM启动,从nand中加载引导程序,但我的nand型号是SPANSION公司的S34ML02G100TF100这款芯片,H-JTAG的官方还不支持我的s3c2416x+S34ML02G100TF100这样的板子,那我就得自己写这配置文件,也就是s3c2146+S34ML02G.hfc,不用担心,这种配置文件读一遍H-JTAG的官方文档就会写的。

使用H-JTAG软件,如果能正确识别出你的芯片和nandflash,能对nand芯片进行擦除和读写,那么接下来的部分,你就跳过了,不用看了。

使用J-link作为开发工具的


使用J-link的前提是你的开发板中已经有了一个引导程序,U-Boot或者自己写的bootstrap,不然不好调试。

假设你有U-Boot在你的开发板中,s3c2416的地址映射中有说SDRAM的地址是0x30000000,如果开启了MMU的,那么SDRAM的起始地址是0xC0000000,如果不懂为什么是0xC0000000,你可以百度百度。

假设你的U-Boot能正常引导,那么你想调试你自己的Bootstrap.bin的时候,用下面的命令就可以调试了

    tftp c0008000 bootstrap.bin

    go   c0008000


或者纯用J-link调试的命令


    h

    r

    speed 8000

    loadbin d:sharebootstrap.bin 0x30008000

    setpc 0x30008000

    g


3.如何为自己的芯片跟Nand写一份*.hfc配置文件?

就以我的主控s3c2416+nand(S34ML02G100TF100)为例,我的H-JTAG软件装在了C:Program Files (x86)H-JTAG,我要的写的配置文件就是放在该目录下的HFC Examples下面的,那么我们先从HFC Examples下找一个相似的,比如说s3c2416+K9F2G08.hfc,具体修改步骤如下:


拷贝一份s3c2416+K9F2G08.hfc,重命名成s3c2416+S34ML02G100TF100.hfc

打开s3c2416+S34ML02G100TF100.hfc,进入修改其中的参数,用记事本打开即可

下面是未修改前的s3c2416+K9F2G08的内容:


FLASH SECTION:

NAND-FLASH

S3C2416+K9F2G08

MEMORY SECTION:

08-BIT X 1-CHIP

0x0

0x30000000

XTAL SECTION:

NULL

TCK SECTION:

0

0

SCRIPT SECTION:

SoftReset+++

SetMem+32-Bit+0x53000000+0x00000000

SetMem+32-Bit+0x4A000008+0xFFFFFFFF

SetMem+32-Bit+0x4A000048+0xFFFFFFFF

SetMem+32-Bit+0x4A00001C+0x1FFFFFFF

SetMem+32-Bit+0x4A000004+0x00000000

SetMem+32-Bit+0x4A000044+0x00000000

SetMem+32-Bit+0x4C000024+0x00000225

SetMem+32-Bit+0x4C000000+0x00000E10

SetMem+32-Bit+0x4C000004+0x00000800

SetMem+32-Bit+0x4C000010+0x00640061

SetMem+32-Bit+0x4C000018+0x00200102

SetMem+32-Bit+0x4C00001C+0x00000000

SetMem+32-Bit+0x4C000020+0x00000051

SetMem+32-Bit+0x48000000+0x00049253

SetMem+32-Bit+0x48000004+0x44000050

SetMem+32-Bit+0x48000008+0x005D0035

SetMem+32-Bit+0x48000004+0xC4000051

SetMem+32-Bit+0x4800000C+0x80000032

SetMem+32-Bit+0x48000004+0xC4000053

SetMem+32-Bit+0x4800000C+0xC0000032

SetMem+32-Bit+0x48000004+0xC4000053

SetMem+32-Bit+0x4800000C+0x44000032

SetMem+32-Bit+0x48000004+0xC4000053

SetMem+32-Bit+0x4800000C+0x44000130

SetMem+32-Bit+0x48000004+0xC4000052

SetMem+32-Bit+0x48000004+0xC4000051

SetMem+32-Bit+0x48000010+0x00000020

SetMem+32-Bit+0x4800000C+0x44000030

SetMem+32-Bit+0x48000004+0xC4000052

Delay+++1

SetMem+32-Bit+0x4800000C+0x47800032

SetMem+32-Bit+0x48000004+0xC4000053

SetMem+32-Bit+0x4800000C+0x44000032

SetMem+32-Bit+0x48000004+0xC4000053

SetMem+32-Bit+0x48000010+0x0000040D

SetMem+32-Bit+0x48000004+0xC4000050

PGMOPTION SECTION:

ADDON SECTION:

NULL


下面说说怎么修改这文件


FLASH SECTION:

NAND-FLASH

S3C2416+K9F2G08 //这里是名称,改成S3C2416+S34ML02G100TF100

MEMORY SECTION:

08-BIT X 1-CHIP //我的开发板的硬件接线(指Nand)8bit,数量就一个

0x0             //这里填的地址是H-JTAG将把擦写或者编程Nand的驱动加载到哪里

0x30000000      //内存的地址,s3c2416的内存放在BANK6起始,物理地址是0x30000000

XTAL SECTION:

NULL            //可以不填,有些nand芯片驱动需要知道外接晶振的大小,但我们2416不需要

TCK SECTION:

0

0

//接下来这个区域可以要,可以不要,这里主要是初始化ARM的内存或者寄存器,这是一段脚本 

//命令格式:SetMem+地址位宽+寄存器或者内存地址+要设置的值

//比如说,第二行的SetMem+32-Bit+0x53000000+0x00000000意思是将0x53000000处设置成0x00000000

SCRIPT SECTION: 

SoftReset+++

SetMem+32-Bit+0x53000000+0x00000000

SetMem+32-Bit+0x4A000008+0xFFFFFFFF

SetMem+32-Bit+0x4A000048+0xFFFFFFFF

SetMem+32-Bit+0x4A00001C+0x1FFFFFFF

SetMem+32-Bit+0x4A000004+0x00000000

SetMem+32-Bit+0x4A000044+0x00000000

SetMem+32-Bit+0x4C000024+0x00000225

SetMem+32-Bit+0x4C000000+0x00000E10

SetMem+32-Bit+0x4C000004+0x00000800

SetMem+32-Bit+0x4C000010+0x00640061

SetMem+32-Bit+0x4C000018+0x00200102

SetMem+32-Bit+0x4C00001C+0x00000000

SetMem+32-Bit+0x4C000020+0x00000051

SetMem+32-Bit+0x48000000+0x00049253

SetMem+32-Bit+0x48000004+0x44000050

SetMem+32-Bit+0x48000008+0x005D0035

SetMem+32-Bit+0x48000004+0xC4000051

SetMem+32-Bit+0x4800000C+0x80000032

SetMem+32-Bit+0x48000004+0xC4000053

SetMem+32-Bit+0x4800000C+0xC0000032

SetMem+32-Bit+0x48000004+0xC4000053

SetMem+32-Bit+0x4800000C+0x44000032

SetMem+32-Bit+0x48000004+0xC4000053

SetMem+32-Bit+0x4800000C+0x44000130

SetMem+32-Bit+0x48000004+0xC4000052

SetMem+32-Bit+0x48000004+0xC4000051

SetMem+32-Bit+0x48000010+0x00000020

SetMem+32-Bit+0x4800000C+0x44000030

SetMem+32-Bit+0x48000004+0xC4000052

Delay+++1

SetMem+32-Bit+0x4800000C+0x47800032

SetMem+32-Bit+0x48000004+0xC4000053

SetMem+32-Bit+0x4800000C+0x44000032

SetMem+32-Bit+0x48000004+0xC4000053

SetMem+32-Bit+0x48000010+0x0000040D

SetMem+32-Bit+0x48000004+0xC4000050

PGMOPTION SECTION:

ADDON SECTION:

NULL


上面简单的介绍了一下如何去自己编写一个正确的.hfc文件,那么光有这个配置文件还是不够的,你还得有个相应驱动文件,这个文件应该放置在C:Program Files (x86)H-JTAGFDeviceNAND-FLASH下,是与你的.hfc文件相匹配的。


4.如何在~/…/H-JTAG/FDevice/NAND-FLASH下实现一个匹配的驱动?

在上一个小段中我们在C:Program Files (x86)HFC Examples下实现了一个s3c2416+S34ML02G100TF100.hfc文件,只有这个文件还无法让H-JTAG正确的识别我们的nandflash,我们还需要增加个描述性的文件,这个文件该放在C:Program Files (x86)H-JTAGFDeviceNAND-FLASH,同样的,在C:Program Files (x86)H-JTAGFDeviceNAND-FLASH下复制一份s3c2416+K9f2G08的描述文件,未修改的文件如下:


FLASH_TYPE=3

FLASH_SIZE=256M

FLASH_ID=0x00AA00EC

FLASH_ID2=0x00DA00EC

FLASH_ADDRESS=0x0

FLASH_NAND_DEVICE=(2048+64)x64PAGESx2048BLOCKS

FLASH_WIDTH=8/0/0

FLASH_DRIVER=1204/0/0


具体修改步骤如下:


将C:Program Files (x86)H-JTAGFDeviceNAND-FLASHs3c2416+K9f2G08的描述文件复制一份

重命名成C:Program Files (x86)H-JTAGFDeviceNAND-FLASHs3c2416+S34ML02G100TF100

文件名与我们之前的s3c2416+S34ML02G100TF100.hfc文件一致

修改s3c2416+S34ML02G100TF100这个文件

下面说说怎么修改


FLASH_TYPE=3  //这一行是nandflash的类型,3代表nandflash

FLASH_SIZE=256M //这是我的S34ML02G100TF100的存储容量,256MB

FLASH_ID=0x00DA0001 //这里是nandflash的芯片的ID,我的S34ML02G100TF100的ID应该是0x00DA0001,所以这里要修改一下

FLASH_ID2=0x000F000F //这里是nandflash的第二ID,有的nandflash会有个复用的名字或者叫别名,我的S34ML02G100TF100的这个地方值0x000f000f,所以修改一下

FLASH_ADDRESS=0x08000000 //我的开发板上的原理图接入的地方是BANK1,而BANK1的物理地址是0x08000000,所以,这里得改

FLASH_NAND_DEVICE=(2048+64)x64PAGESx2048BLOCKS//这里描述是nandflash的页、块、容量大小

FLASH_WIDTH=8/0/0  //这里是nandflash的接入位宽,我的开发板原理图是8位的IO模式,所以选这个

FLASH_DRIVER=1204/0/0 //这里是默认值,不用改


总结

经过上面的这几步骤的配置,至少应该是能完成这个arm-linux的逻辑开发环境,为接下来的全面裸机开发调试做准备。

关键字:arm-linux  裸机开发  环境 编辑:什么鱼 引用地址:[初级教程]搭建arm-linux裸机开发的环境

上一篇:[初级教程]samsung s3c2416x 的启动方式
下一篇:[初级教程]arm-linux裸机开发之-bootstrap.bin的实现

推荐阅读

Han®HPR HPTC:恶劣环境下变压器的性能提升
Han®HPR HPTC:恶劣环境下变压器的性能提升安装快捷、方便、安全 / 使用寿命长埃斯佩尔坎普/纽伦堡/慕尼黑,2022年11月8日 — 推出Han®HPR HPTC, 浩亭提供高性能、耐用和易于安装的变压器接口,同样适用于室外和室内场景。连接器符合所有相关的铁路标准,如抗振动和不透水飞溅和盐雾环境。因此,该接口同样适用于能源部门的需求概况,特别适用于能源工厂和基础设施的沿海位置以及海上部门的解决方案。能源转型正在如火如荼地进行,并已渗透到工业的各个部门和分支。许多新技术正在被开发出来,并使公司面临安全有效地传输大电流的挑战。随着Han®HPR HPTC的推出, 浩亭正在为能源应用中的大电流提供持久的接口-简单,直接和尽可能安
发表于 2022-11-22
Han®HPR HPTC:恶劣<font color='red'>环境</font>下变压器的性能提升
英飞凌半导体科技持续赋能,让智能空调能够看见、听见和感知周围的环境
【2022年11月22日,德国慕尼黑讯】今年,全球许多地区都出现了创纪录的高温天气,空调系统的需求也因此不断上升。欧盟建筑和工业领域消耗的能源中,有50%用于供暖和制冷。半导体技术在降低相关系统的能耗方面可以发挥决定性作用。英飞凌科技股份公司在2022慕尼黑国际电子元器件博览会期间,展示了一款智能空调系统。这款智能空调可以有针对性地进行制冷,能够显著降低系统功耗并提高舒适性。英飞凌科技工业功率控制事业部总裁Peter Wawer博士表示:“半导体能够以多样化的方式支持绿色发展和数字化转型,是互联应用的核心。智能空调系统就是一个典型的用例,该设备可以‘看见’、‘听见’、和‘感知’周围的环境,根据实际需求进行制冷。这不仅能够提高室内的舒
发表于 2022-11-22
英飞凌半导体科技持续赋能,让智能空调能够看见、听见和感知周围的<font color='red'>环境</font>
精一战略:在动荡的环境中“韧性增长”
导语面对未来高度不确定的发展环境,越来越多的企业感受到了增长的压力,如何在不确定的环境中寻找增长点是高层管理者们当下面临的巨大挑战。精一战略ONE模型揭示了企业在不确定环境中获得韧性增长的基本原则。当下,如何能够在高度动荡的环境中获得持续增长成为企业领导者们关注的核心话题。自2020年爆发的新冠疫情对全球经济的发展带来不利影响,2022年突发的俄乌冲突无疑是雪上加霜,让全球经济复苏的希望更加渺茫。疫情、战争等多重危机的叠加影响让那些未有核心竞争优势的企业陷入增长困境,不少企业家们对未来的命运感到“战战兢兢、如履薄冰”。在动荡的环境中,企业领导者们需要意识到,唯有提高企业的“韧性”才能抵御外部危机的冲击,从而穿越危机获得持续增长。本文
发表于 2022-11-07
精一战略:在动荡的<font color='red'>环境</font>中“韧性增长”
深入:经济环境开始影响欧洲的电池超级工厂项目
这家总部位于瑞典的公司已经筹集了80亿美元用于建造锂离子电池设施。图片:Northvolt。   Northvolt和Britishvolt在向媒体提供的声明中就经济状况对其计划产生的负面影响发表了评论。   总部位于瑞典的锂离子电池制造公司Northvolt正考虑推迟其位于德国海德市的第三家电池制造工厂——Northvolt
发表于 2022-11-05
VIAVI发布2022年环境、社会和治理报告,阐述致力于可持续运营的举措
VIAVI发布2022年环境、社会和治理报告,阐述致力于持续开展可持续运营并创造长期价值的举措中国上海,2022年11月2日 – VIAVI Solutions(VIAVI)近日发布2022年环境、社会和治理(ESG)报告,内容涵盖公司2022财年的全球运营。公司于2020年发布了首份可持续发展报告,并于2021年发布了第二份报告。此次发布的2022年ESG报告阐述了VIAVI持续致力于将可持续发展融入自身战略和运营的方式。2022年ESG报告包含公司首次ESG优先事项评估的结果,该评估通过确定对公司业务战略、成功和创造长期价值的能力最具影响的环境、社会和治理议题,指导VIAVI的整体ESG战略。2022年ESG报告还包括公司根据与
发表于 2022-11-02
STM32开发环境(3)----下载调试
下载调试 STM32 程序下载主要有两种方法:串口和JLINK。串口下载也可以扩展为USB,JLINK支持JTAG、 SWD。 STM32 的串口下载一般是通过串口 1 下载的,使用USB下载其实也是应用这种方式。只是要在PC端下载USB转串口的驱动,在硬件端加一片USB转串口的片子。USB转串口的片子常用的是CH340,在PC端下端其驱动程序就可。另外还需使用STM32串口下载软件,受正点原子影响我使用FLYMCU,这个软件好用、易用,打开就能知道怎么用。该软件可以在 www.mcuisp.com 免费下载。特别提醒:不要选择使用 RamIsp,否则,可能没法正常下载。 需要在线调试时,JTAG和SWD是必不可少的。这
发表于 2022-10-24
STM32<font color='red'>开发</font><font color='red'>环境</font>(3)----下载调试

推荐帖子

12v 0.5A 适配器低价出售,半卖半送
有几十个12v0.5A适配器低价出售,之前多采购的,需要的快来,,, 12v0.5A适配器低价出售,半卖半送
梅子XM 淘e淘
常用电阻标称值
常见电阻,设计电路时计算出来的电阻值经常会与电阻的标称值不相符,有时候需要根据标称值来修正电路的计算。下面列出了常用的5%和1%精度电阻的标称值,供大家设计时参考。 常用电阻标称值
利剑如风 单片机
cpld的外部时钟电路怎样设计
我查了好多CPLD方面的资料,我发现现在的教材都是针对怎样编程的,很少有讲基础电路方面,比如怎样设计一个最小的能使cpld动起来的电路。cpld外接电源是多大,有几种类型的电源电压,输出输入引脚的上拉电阻选多大好,还有cpld外接晶振电路的最大频率是多少怎样从手册中查找。如果谁有这方面的资料麻烦发我一份的,我现在自学cpld,这些资料我发现真的不好找,当时却是初学者很需要的。 cpld的外部时钟电路怎样设计
sunboy25 FPGA/CPLD
STM32F107VC金龙开发板 第七章 金龙107——RTC
第七章金龙107——RTC 7.1RTC简介:RTC是“RealTimeClock”的简称,意为实时时钟,想必各位读者都非常熟悉这一模块(例如DS1302),事实上,RTC模块在电子产品上的应用非常广泛,从大型的工业机器到个人电脑、家用电器甚至是廉价的电子手表,都不乏RTC的身影。STM32微控制器向用户提供了一个简易的RTC单元,之所以说其简易,因为其本质上是一个独立的32位定时器,没有类似DS1302的日历功能(相应的软件配置也可实现)。RTC使用的时钟源有三种,分别
旺宝电子 stm32/stm8
2410(阳初的板子)如何配置启动
大侠好: 2410开发板上有2*32MB的SDRAM和1*64M的NANDFLASH,没有NORFLASH,而提供的测试程序是针对有NORFLASH的,所以现在可以在板子上调试,程序放到0X30000000的SDRAM开始处运行,但是掉电就不行了。请问熟悉的DX们我该如何处理,即把程序存到NAND中,上电后搬运到SDRAM运行???对于写底层的驱动也不太熟悉2410(阳初的板子)如何配置启动
sofy231 嵌入式系统
【行空板 Python编程学习主控板】评测二、硬件系统熟悉
一周工作终于结束,每天加班到很晚,都没有什么时间来学习行空板,赶紧趁着周末把玩一下。所谓工欲善其事必先利其器,我玩任何开发板都有个习惯,那就是上手前先要熟悉一下该板子的硬件设计,以便对硬件系统有个大概的了解。此次评测,官方DFRobot没有提供行空板的PDF原理图,估计是出于版权考虑吧。那就简单了解一下行空板的硬件架构设计及主要芯片是用的什么品牌、型号。(一)硬件架构介绍行空板采用MPU微处理器+MCU微控制器双架构,MPU+内存+硬盘+屏幕及外设组成计算机系统运行Linux系统,
天意无罪 嵌入式系统
小广播
设计资源 培训 开发板 精华推荐

何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2022 EEWORLD.com.cn, Inc. All rights reserved