上一次把引导的汇编看完,已经准备C的运行环境,下面就开始学习C的源程序,从start.S文件里到跳文件
lib_arm/board.c里运行.
/*
引导程序从汇编start.S里跳到这里执行。
蔡军生 2005/07/19
*/
void start_armboot (void)
{
/* 声明一个全局指针,它是指向一个数据结构,用于保存参数。
并且它占用r8寄存器,用它来保存内存地址,达到全局使用目的。
*/
DECLARE_GLOBAL_DATA_PTR;
ulong size;
init_fnc_t **init_fnc_ptr;
char *s;
#if defined(CONFIG_VFD) || defined(CONFIG_LCD)
unsigned long addr;
#endif
/* gd指针可写,因为已经分配一个寄存器给它作为变量。
这里就相当于把后面算出来的地址保存到r8寄存器.
*/
gd = (gd_t*)(_armboot_start - CFG_MALLOC_LEN - sizeof(gd_t));
/* 下面一句是阻止3.4以上版本的GCC进行代码优化,把后面的代码删除掉。 */
__asm__ __volatile__('': : :'memory');
/* 清空gd指向的结构 */
memset ((void*)gd, 0, sizeof (gd_t));
/* */
gd->bd = (bd_t*)((char*)gd - sizeof(bd_t));
memset (gd->bd, 0, sizeof (bd_t));
monitor_flash_len = _bss_start - _armboot_start;
这一段准备好保存参数的全局变量区.
后面就是一系列的初始化和获取正确的参数.
关键字:ARM开发 汇编 运行环境
引用地址:
学习ARM开发(9)
推荐阅读最新更新时间:2026-03-20 10:35
ARM裸机开发bootloader汇编语言
一、汇编语言概述 1、为什么要使用汇编 一般情况下我们不会用到汇编,但有两种情况下,我们要用到汇编。 1、启动代码。编写bootloader和内核时使用,主要是对cpu和内存进行初始化时使用,因为这个时候还没有c语言的环境(堆栈还没有建立),所以不能用c语言。 2、高效率的特殊需求。因为汇编语言的执行效率要高于c语言,所以对某些对效率要求高的程序要用到汇编,可以是汇编与c语言的混合编程。 2、汇编分类 1、ARM标准汇编,适用于windows平台下ARM公司开发的汇编器ADS。 2、GNU汇编,linux平台下GNU交叉编译工具链中的汇编器。它与ARM标准的一点不同是GNU汇编要在段标记符前加点,例如 .text。而AR
[单片机]
ARM汇编编程基础之五-ADS开发环境的使用
掌握了基本的汇编指令和伪操作后,就具备了编写简单ARM汇编程序的基本理论能力,不过要实战得到真实可执行的程序,还需要可以对程序进行编辑和编译的开发环境(命令行编译器或IDE)的支持,同时程序在开发过程中免不了要进行调试,这就需要调试器的支持。一般而言,会有供应商将程序的编译器、编译器、调试器以及其它一些辅助工具组合在一起,形成程序的开发、调试集成开发环境(IDE)软件,提供给程序开发人员使用。对ARM程序开发而言,目前比较流行的IDE有2套:运行于windows平台的ADS和运行于Linux平台的gcc等交叉编译工具链。总的来看,ADS在程序的编译和调试方面要比gcc使用起来方便很多,也更容易掌握和使用,因此针对初学者,本文将展示A
[单片机]
构建 arm-linux 仿真运行环境 (skyeye + arm-linux + NFS)
一 前言 本文旨在将 arm-linux 在 skyeye 上搭建起来,并在 arm-linux 上能成功 mount NFS 为目标, 最终我们能在 arm-linux 里运行我们自己的应用程序. 其实在 skyeye 上移 植 arm-linux 并非难事,网上也有不少资料, 只是大都遗漏细节, 以致细微之处卡壳,所以本 文力求详实清析, 希望能对大家有点用处。 二 安装 Skyeye 我们选定 skyeye 的 1.2.4 这个版本, 为了能让它上面运行的 arm-linx 能挂接 NFS,我 们需要修改 device/net/dev_net_cs8900a.c (修改后的文件在附件里), 再编译 skyeye
[单片机]
LED道路照明低温运行环境下的可靠性保障
随着led照明技术的快速发展,在国内的许多城市,道路照明已经不乏LED路灯的身影。尤其是大功率LED器件的光效超过100lm/W以后,LED路灯作为道路照明的发展趋势已经得到普遍认同。2009年,国内几个城市分别组织了LED道路照明产品的评估测试工作,大多数LED路灯产品在配光曲线、系统光效等关键技术指标方面进步显着,在道路照明标准的符合性、节能效果等方面已经达到相关标准和规范的要求。 尽管LED路灯技术水平的发展较快,但是大多数LED路灯厂商在产品研发过程中忽略了在寒地应用环境下的特殊技术要求。一个普遍的错误认识是,LED在寒冷地区应用有利于散热,不容易发生故障。殊不知,寒冷应用环境下,对LED路灯有着更为严格的技
[电源管理]
RFID运行环境与接口方式
1 运行环境
一个完整的射频识别应用系统应当包括读写器、电子标签、计算机网络等设备。考虑到数据读取、处理、传输等问题,还应当考虑读写器天线的安装、传输距离的远近等问题。
射频识别技术的运行环境相对比较宽松,从应用软件系统的运行环境来看,可以在现有的任何系统上运行基于任何编程语言的任何软件。
计算机平台系统包括Windows、Linux、UNIX以及DOS平台系统。
2 接口方式
(1) RJ45
RF45和5类线配合使用在以太网络中。8条线分成4组,分别由红白、红、绿白、绿、蓝白、蓝、棕白、棕共8种单一颜色或者白条色线组成。关于RJ45的接法有两种,分别为T-568A和T-568
[网络通信]
Arm Flexible Access 扩容升级,赋能更多企业加速芯片开发
Arm 控股有限公司(以下简称 Arm) 近日宣布对其技术授权订阅模式中的 Arm Flexible Access 方案进行升级,进一步拓展其涵盖的产品组合与适用范围,并简化加入流程。 此次更新旨在降低复杂度、加快项目进程,在最大程度为初创企业及成熟芯片设计团队降低设计风险的前提下,让他们同时得以释放更广阔的边缘人工智能 (AI) 创新空间。 Arm 商业赋能总监 Neil Parris 表示:“芯片设计的创新离不开持续的迭代。无论是初创企业还是成熟的芯片设计团队,能够无财务成本顾虑地开展技术探索、测试和优化,是实现突破的关键。这正是 Arm Flexible Access 方案不断演进的初衷——让创新之路更加便捷高效。
[嵌入式]
Arm 出席 OPPO 开发者大会,解读端侧 AI 技术与应用新趋势
10 月 15 日,OPPO ColorOS 16 发布会暨 OPPO 开发者大会在深圳隆重召开,大会现场除发布 OPPO 最新技术外,还举办了多场论坛,与业界领袖共同探讨科技创新与人工智能 (AI) 新生态构建。在大会上,Arm 受邀发表了主题演讲,分享端侧 AI 的演进趋势及 Arm 最新的 Lumex AI 计算平台如何助力技术突破、应用创新及生态合作。 端侧 AI 实现“从可选到必需”的跃迁,个性化成核心方向 “仅一年时间,端侧 AI 就已从‘可选功能’变为用户‘基础期待’。”Arm 终端事业部智能手机市场高级总监 Steve Raphael 在演讲中指出,2024 年行业还在探讨端侧 AI
[半导体设计/制造]
迅为i.MX8MM开发板ARM嵌入式Linux安卓9.0工业核心板iMX8M Mini板
迅为i.MX8M Mini开发板是恩智浦首款嵌入式多核应用处理器,具有多达五个内核:采用4核ARM Cortex-A53 + Cortex-M4多核处理器+GPU,可提供出色的系统性能。 ∝ 4个Cortex-A53内核平台,每核运行频率高达1.8GHz。32KB L1-I缓存/ 32 kB L1-D缓存,512 kB L2缓存 ∝ 1个Cortex-M4内核,运行频率高达400MHz。16 kB L1-I缓存/ 16 kB L2-D缓存 ∝ 3D GPU (1个着色器,OpenGL® ES 2.0) ∝ 2D GPU iMX 8M Mini采用了先进的14LPC FinFET工艺技术构建,提供更快的速度和更高的电源效率。支持工
[单片机]