Loading...

加载中...

最新文章

IMX6ULL裸机开发中的C语言算术运行时辅助函数(三)—— 64位除法与乘法

在前两篇文章中,我们详细分析了ARM平台上的64位移位运算(ashldi3.S、ashrdi3.S、lshrdi3.S)和32位除法取模运算(lib1funcs.S)的软件实现。本文将继续探索U-Boot ARM运行时辅助算术库的64位除法与64位乘法。 64位除法是整个运行时库中最复杂的算法之一,它不仅涉及复杂的数学原理,还需要精妙的工程优化来确保性能。而64位乘法虽然概念上相对简单,但在32位...
阅读更多

从零开始逐步实现U-Boot(三)—-IMX6ULL早期Debug UART及格式化输出实现

系列:从零开始逐步实现U-Boot 目标平台:NXP i.MX6ULL (ARM Cortex-A7) QEMU mcimx6ul-evk模拟板 或 正点原子IMX6ULL-MINI板 本文是从零开始逐步实现U-Boot实战系列的第三篇。 一、前言当我们调试一块开发板时,最希望的就是能随时看到调试信息。理想的情况是,代码运行到任何位置,我们都能通过某种方式获知当前状态——是正常通过了,还是卡在...
阅读更多

C语言可变参数机制与裸机环境格式化输出实现

在 IMX6ULL 裸机开发中,当我们在 _main 函数的最早期阶段(board_init_f前期)进行调试时,面临一个尴尬的处境: C 运行时库尚未初始化——无法使用标准 printf 堆内存管理器不存在——无法使用任何依赖 malloc 的函数 只有最原始的硬件访问能力——早期Debug UART调试,可能只实现了 printch(发送单字符)和 printascii(发送字符串) 这时...
阅读更多

从零开始逐步实现U-Boot(四)—-GD结构体与board_init_f框架

系列:从零开始逐步实现U-Boot 目标平台:NXP i.MX6ULL (ARM Cortex-A7) QEMU mcimx6ul-evk模拟板 或 正点原子IMX6ULL-MINI板 一、前言在前三篇文章中,我们完成了最小Bootloader的基础框架:reset向量启动、LED控制、早期调试串口。这些代码能够运行,但从架构角度审视,它们仍是”散装”的裸机程序——缺乏统一的状态管理,没有规范...
阅读更多

IMX6ULL早期调试串口UART实现

系列:从零开始逐步实现U-Boot 目标平台:NXP i.MX6ULL (ARM Cortex-A7) QEMU mcimx6ul-evk模拟板 或 正点原子IMX6ULL-MINI板 一、前言上一篇我们成功点亮了IMX6ULL的LED,并在 _main 函数中初步使用C语言完成了简单的外设控制。但在真正的U-Boot源码中,_main 是整个引导流程的核心骨架,承载着从板级早期初始化(boa...
阅读更多

从零开始逐步实现U-Boot(二)——IMX6ULL启动流程与C运行环境构建

系列:从零开始逐步实现U-Boot 目标平台:NXP i.MX6ULL (ARM Cortex-A7) QEMU mcimx6ul-evk模拟板 或 正点原子IMX6ULL-MINI板 本篇文章将深入探讨嵌入式系统启动的核心问题:如何让芯片从上电复位状态,一步步进入到可以执行C语言代码的环境,并最终通过硬件验证(点亮LED)证明我们的启动代码是正确的。 这个过程涉及三个关键技术点: 汇编启动...
阅读更多

从零开始逐步实现U-Boot(一)——Kconfig/Kbuild配置构建系统搭建与主机程序编译

系列:从零开始逐步实现U-Boot 目标平台:NXP i.MX6ULL (ARM Cortex-A7) QEMU mcimx6ul-evk模拟板 或 正点原子IMX6ULL-MINI板 U-Boot(Universal Bootloader)作为嵌入式系统的核心组件,其构建系统的演进经历了从早期的纯 Makefile 到引入 Linux 内核式 Kconfig/Kbuild 系统的转...
阅读更多

C++引用

在C++的世界中,引用(Reference) 是一个看似简单却极其深邃的语言特性。引用(reference)是C++对C语言的重要扩充。引用和指针具有相似的功能,都可以让你间接引用其他对象,对目标变量的内容进行直接操作。 在实际工程开发中,引用无处不在——函数参数传递、运算符重载、范围for循环、智能指针的使用,几乎每一个C++程序员每天都在与引用打交道。 然而,许多初学者对引用的理解仅停留在”变...
阅读更多
导航 Enter 打开 ESC 关闭

输入关键词开始搜索