[初级教程]arm-linux裸机开发之-bootstrap.bin的实现

发布者:liliukan最新更新时间:2022-03-09 来源: eefocus关键字:arm-linux  裸机开发  bootstrap  bin 手机看文章 扫描二维码
随时随地手机看文章

1.前言

我们知道,在Linux平台下编写的程序要想在arm平台上运行,我们就得使用交叉的编译器,我们用arm-linux-none-gnueabi-gcc 或者arm-linux-gcc也罢,这些编译器编译产生的程序能够直接运行在arm的平台上,那我们的bootstrap.bin自己来实现,都需要具备哪些文件呢?众所周知,在引导程序中当今做大的最大的莫过于U-Boot这个组织,今天,我们就模仿U-Boot来实现一个简易的引导程序,我们称之为Bootstrap.bin。实现该bin文件我们模仿U-Boot的工程模版,写出几个实现文件:

这里写图片描述

start.S

我们知道汇编指令的代码在机器上执行的速度比较快,那些短小精悍的程序往往运行在设备初始化的初级阶段,我们在这里引用start.S的目的也是在此初始化我们arm设备的一些必须要初始化的系统外设,比如:


设置SVC32模式

关闭看门狗

屏蔽所有中断

关闭MMU以及Cache

初始化时钟

初始化SDRAM

初始化Nand

——-未完待续

关键字:arm-linux  裸机开发  bootstrap  bin 引用地址:[初级教程]arm-linux裸机开发之-bootstrap.bin的实现

上一篇:[初级教程]搭建arm-linux裸机开发的环境
下一篇:[中级教程]如何关闭MMU以及I-Cache和D-Cache?

推荐阅读最新更新时间:2024-11-02 21:58

arm-linux启动后屏幕不断闪烁
这几天郁闷啦。arm-linux启动后屏幕不断闪烁。记得以前也遇到过这样的问题,却忘了怎么解决的,现在把它记下来,博客在,他就在。 先是,开机后停在屏幕校准界面,十字叉停在那,怎么点都进不去系统。我就把NANDFLASH擦掉,再下载,再烧,结果七整八整,开机就显示个优龙科技,连个校准界面都没有了。接上超级终端后,超级终端上屁都不显示一个。这样想擦写FLASH都没办法了,烦啊。(进入WINDOWS CE还可以) 实在没办法,就把刘老师请来。他就把JP1跳线帽拔掉,从NORFLASH启动,进入了超级终端的界面,然后再把NANDFLASH擦啊写啊的。可是,新的问题又出现了:开机后屏幕闪烁不停,同样进不去系统了。于是乎,进
[单片机]
BIN或.ASM文件转换成C文件常见步骤
一直以来,将.BIN或.ASM文件转换成C文件,在所有开发工程师眼中都是不可能存在的事情。但从芯片解密这个逆向行业来看是完全可以实现的,但需要反向工程师拥有足够的开发经验,及对STM32系列单片机有足够的了解。 通常的操作都是: 第一步:先进行解密,提供二进制代码BIN文件。 第二步:将BIN文件转成反汇编文件,汇编文件也是一种编程文件,只是现在很少有工程师可以看得懂。 第三步:工程师根据反汇编文件,来进行C语言的编写,此过程是工程师一行一行编辑出来的,也非常耗时间,整个周期大约在30天左右(视文件大小,正常100K来计算)。费用1000/K。所以整个工程反c工程下来,花费很高,有时候不如重新开发了。 第四步:根据客户提供的样
[单片机]
OK6410A 开发板 (八) 25 linux-5.11 OK6410A 进程角度 裸机和进程的区别
裸机 代码 : 没有调度函数 有进程概念的代码 : 有调度函数 添加调度要添加什么 添加调度要添加什么 1. pick next task 调度算法 选择 哪个进程 为 下一个进程 2. switch 寄存器的保存和恢复 其他细节 1. 在什么时候调度/即调度时机 调度的技术设想 考虑到 要选择 下一个进程, 考虑 用 单链表即可 考虑到 要保存 寄存器, 考虑用一个 结构体(不同的体系架构有不同的寄存器个数与bit) 保存即可 考虑到换出,当前cpu就无法访问,但是换入,还要能恢复,就需要全部变量 考虑到 每个 任务 要 一套(区分进程/选择进程/保存进程上下文),将 int类型变量/单链表/结
[单片机]
OK6410A 开发板 (四) 1 OK6410A 裸机LCD RGB接口
代码已经上库,https://github.com/lisider/OK6410/tree/master/lcd 硬件 lcd 控制器侧 14 Display Controller // 位于S3C6410 datasheet Page455 寄存器范围 : 0x77100000 - 0x77100344 寄存器个数 : 105个 硬件接口 : 支持 RGB 和其他三种接口(I80接口/NTSC/PAL标准电视编码器接口/IT-R BT. 601 接口) lcd 侧 型号: WXCAT43-TG3#001 4.3 寸 屏 规格书与原理图 屏幕显示区域 : 95.04 * 53.856 mm 对角线(可显示区域) : 4.
[单片机]
Eclipse开发调试ARM裸机程序(三)C语言LED_LINUX使用DNW
第二个程序用C语言实现的LED程序,Startup.S是启动代码;led_on_c.c是C语言实现的LED点灯程序。代码分别如下: @ @ File:Startup.S @ 功能:通过它转入C程序 @ .text .global _start _start: ldr r0, =0x56000010 @ WATCHDOG寄存器地址 mov r1, #0x0 str r1, @ 写入0,禁止WATCHDOG,否则CPU会不断重启 ldr sp, =1024*4 @ 设置堆栈,注意:不能大于4k, 因为现在可用的内存只有4K
[单片机]
Eclipse<font color='red'>开发</font>调试ARM<font color='red'>裸机</font>程序(三)C语言LED_LINUX使用DNW
一步一步制作ARM-Linux交叉编译环境
我们使用以下版本的文件为例子建立arm-linux 交叉编译环境: binutils-2.11.gz gcc-2.95.3.gz glibc-2.2.3.gz glibc-linuxthreads-2.2.3.tar.gz linux-2.4.5.gz patch-2.4.5-rmk7.gz # linux kernel patch 我们的工作路径是: ~ -- ------- tars -- ----- SourceDir | ----- BuildDir ------ armtools tars 在这里放我们的下载来的 .tar.gz 文件 SourceDir 这个临时目录放我们解压缩后的源文件 BuildDir 我们在这里编
[嵌入式]
Exynos4412裸机开发 —— RTC 实时时钟单元
RTC(Real-Time Clock) 实时时钟。RTC是集成电路,通常称为时钟芯片。在一个嵌入式系统中,通常采用RTC来提供可靠的系统时间,包括时分秒和年月日等,而且要求在系统处于关机状态下它也能正常工作(通常采用后备电池供电)。它的外围也不需要太多的辅助电路,典型的就是只需要一个高精度的32.768kHz 晶体和电阻电容等。 一、RTC 控制器 实时时钟(RTC)单元可以通过备用电池供电,因此,即使系统电源关闭,它也可以继续工作。RTC可以通过STRB/LDRB 指令将8位BCD码数据送至CPU。这些BCD数据包括秒、分、时、日期、星期、月和年。RTC单元通过一个外部的32.768kHz 晶振提供时钟。RTC具有定时报警
[单片机]
基于WT2003H0语音芯片在扫地机/智能桌游等产品更换语音bin应用设计方案
一:产品市场 随着家用电子设备的普及,各种智能化设备进入人们生活中,如洗地机、扫地机、共享单车、智能门锁、智能桌游、智能网关等,客户想方便快捷的更换替换产品的音频文件。针对部分客户自主更换语音内容的需求,定制化的语音方案,唯创知音WT2003H0系列语音芯片远程更换语音bin的功能无疑是一个很好的选择。 本文以WT2003H0系列语音芯片为例,与唯创知音其余的WT2003H系列串口更新语音bin(bin文件包含运行程序+语音)不同,唯创知音新推出的这款芯片功能,为直接替换语音bin文件,由MP3、WAV格式合成,不包含运行程序。 扫地机 、共享单车 、智能门锁 二: 产品框架图 语音更换 三:芯片功能特点 1:工作电压
[嵌入式]
基于WT2003H0语音芯片在扫地机/智能桌游等产品更换语音<font color='red'>bin</font>应用设计方案
小广播
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

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

换一换 更多 相关热搜器件

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved