推荐阅读最新更新时间:2024-03-16 14:45
ARM裸机开发bootloader交叉工具链
今天跟随国嵌,初识linux下ARM的裸机开发全过程。现在总结如下: 首先说明为什么要学习裸机开发,一方面bootloader的编写要用到裸机开发的知识,另一方面就是驱动的开发。一般情况下我们进行系统上的开发,不会用到裸机开发。 学习要点 1、如何修改默认路径 用户 root #vim /root/.bashrc 添加:export PATH=$PATH:路径 生效路径:source /root/.bashrc 2、裸机开发流程:1编写裸机程序。2调试裸机程序。3生产二进制映像(编译、链接、格式转换)。4烧写/运行二进制映像。 led.lds led.SMakefile 编译:arm-linux-gcc -g
[单片机]
PIC18系列单片机中使用BootLoader
引 言 PIC单片机的BootLoader属于需要自己写程序的那种,可以根据自己的需要写出各种功能的BootLoader程序来。目前,比较常见的BootLoader程序有Microchip公司的C18版本和着名的PICC编译器厂商HI-TECH公司(以下简称HI-TECH)的PICC18版本。它们的相似之处在于都占用了系统的0x00~0x1FF的程序空间。Microchip的版本是用纯彙编写的,而HI-TECH的版本是用C语言编写的。 在PIC系列单片机中,只有PIC18系列和PIC16F87X系列的单片机才有IAP功能,才能够使用BootLoader功能。下面只介绍PIC18的BootLoader,PIC16F87X的
[单片机]
简单介绍ARM linux的启动部分源代码
当内核映像被加载到RAM之后,Bootloader的控制权被释放。内核映像并不是可直接运行的目标代码,而是一个压缩过的zImage(小内核)。但是,也并非是zImage映像中的一切均被压缩了,映像中包含未被压缩的部分,这部分中包含解压缩程序,解压缩程序会解压缩映像中被压缩的部分。zImage使用gzip压缩的,它不仅仅是一个压缩文件,而且在这个文件的开头部分内嵌有gzip解压缩代码。当zImage被调用时它从arch/arm/boot/compressed/head.S的start汇编例程开始执行。这个例程进行一些基本的硬件设置,并调用arch/arm/boot/compressed/misc.c中的decompress_kern
[单片机]
2440开发板启动代码学习
2440init.s是启动代码的主文件,包括3个头文件,option.inc,memcfg.inc,2440addr.inc。 option.inc定义了3个堆栈起始地址,总线宽度,时钟相关参数的定义等。其中这个总线宽度将作为一个IF判断量,决定了各Bank的位宽设置,参见memcfg.inc文件及datasheet。 memcfg.inc是存储器Bank的配置文件,定义了存储器相关寄存器位的值。各bank的位宽的设置定义也是在这个文件中,注意bank0的位宽没有相关的定义,因为它的位宽取决于OM 引脚,即启动方式。 2440addr.inc定义了相关寄存器地址,包括存储器控制寄存器,时钟电源管理寄存
[单片机]
S5PV210开发系列三_简易Bootloader的实现
Bootloader是嵌入式系统上电后第一段运行的代码。对于功能简单的处理器,可能并没有Bootloader的概念,但对于应用处理器,有不同的启动方式。不同的存储设备(Nand flash、sd/mmc、DDR2、SRAM等)。不同的操作系统等,往往须要一个Bootloader先初始化CPU和相关的硬件,建立内存空间映射,把内核或应用程序载入到对应的内存运行位置。最后调用内核或应用程序,释放CPU控制权,完毕整个Bootloader的流程。 笔者此处就S5PV210的Bootloader实现作一个简单的介绍。 1. Bootloader流程 Bootloader是严重依赖于详细硬件实现的,同样CPU内核架构。不同厂商生产的处理器其
[单片机]
STM32 Bootloader异常复位如何解决
问题描述 客户反馈通过PC软件Flashloader不能够跟STM32 MCU自带Bootloader连接。并且系统运行一段时间后异常复位。 系统分析 检测原理图 延续之前的项目,进行的一些软硬件简单修改。 上电、放电的时序也是正常。 BOOT0 拉高,BOOT1 拉低, 测量工作时的电压正常(2.5v)。 检测所有相关的硬件软件都是没有问题,他们的BOOT脚,以及之前的PDR_ON是通过外围的FPGA单元控制,我们一开始怀疑这些上电时序,以及PDR逻辑出错。尝试让他们全部断开逻辑,测试整个上电,掉电过程都是没有什么问题。 测量波形 检测他们的串口工具 能正常在PC上发现他们的串口工具,数据的发送正常。 但是串口的到PCB
[单片机]
BootLoader —— S3C2440
先来看看扬创的bootloader的实现方法: 首先:在汇编中初始化堆栈,中断向量表,MMU,时钟,串口等,然后跳到C语言的Main函数。这部分代码小于4K,放在block0。这个Main函数用来将第二段代码拷备到DRAM中并执行。 其次:进入第二段代码。第二段代码也是先在汇编中初始化堆栈,中断向量表等,然后跳到C语言的Main函数。这部分代码就不用有4K限制了,具体大小由第一段代码决定,因为它本身由第一段代码来搬运。这个Main函数用来显示开机图片以及进度条。然后视串口接收信息运行带有USB下载NK的Eboot或是读取NK映像,启动WINCE系统。 最后:进入第三段代码。这段代码用于通过USB将PC上的NK.nb0或
[单片机]
基于Intel PXA272的Bootloader的设计与实现
1 前言 PC机中的引导程序一般由BIOS和位于MBR的OS Bootloader(例如LILO或者GRUB)一起组成。然而在嵌入式系统中通常没有像BIOS那样的固件程序(有的嵌入式CPU有),因此整个系统的加载启动任务就完全由Bootloader来完成。但是随着嵌入式系统的发展,Bootloader已经逐渐在基本功能的基础上进行了扩展,Bootloader可以更多地增加对具体系统的板级支持,即增加一些硬件模块功能上的使用支持,以方便开发人员进行开发和调试。编写 BootLoader是开发WinCE系统第一步,也是关键的一步。只有得到一个稳定工作的Loader程序,才能够更进一步开发WinCE的BSP,直至最后整个系统的成功。
[嵌入式]