单屏网站设计怎样建设自己网站的后台

张小明 2026/1/13 8:45:29
单屏网站设计,怎样建设自己网站的后台,免费微网站系统源码,西安工商注册平台官网Mini2440是一块非常经典的入门开发板。本文将讲透这张启动图背后的概念。 上电启动 一切始于电平。在 S3C2440 芯片上#xff0c;有两个特殊的引脚#xff1a;OM0 和 OM1。当然一般都是用的开关就实现了#xff08;图右下角#xff09;。 当系统复位#xff08;Reset有两个特殊的引脚OM0 和 OM1。当然一般都是用的开关就实现了图右下角。当系统复位Reset信号失效的瞬间芯片内部逻辑会采样这两个引脚的电平状态从而决定 CPU 的第一条指令从哪里读取。OM1OM0启动模式解释00NAND Flash 启动Mini2440 最常用的模式。此时片内 SRAM 被映射到 0 地址。0116-bit ROM 启动通常指 NOR Flash 启动。NOR Flash 被映射到 0 地址。1032-bit ROM 启动同上只是总线宽度不同。11Test Mode测试模式一般不用。核心差异NOR Flash 启动NOR Flash 像内存一样支持随机访问支持片上执行XIP, eXecute In Place。CPU 可以直接读取 NOR Flash 里的指令执行。NAND Flash启动NAND Flash 像硬盘只能按块访问不支持 XIP。CPU 无法直接去 NAND 里取指令。这就引出了 S3C2440 最精妙的设计——Steppingstone。什么是 SteppingstoneS3C2440 SOC芯片内部集成了一块容量极小的SRAM (StaticRAM)大小只有4KB。在官方数据手册中这块 SRAM 被称为Steppingstone。它的作用正如其名——它是系统启动的一块垫脚石。因为 4KB 太小跑不了操作系统甚至跑不下完整的 u-boot但它足够用来完成最基本的硬件初始化和代码搬运。当你点击“编译”时工具链gcc/ld做了一件至关重要的事情排座位。通过链接脚本.ldsstart.s被安排在了最前面main.c紧随其后。假如最终生成的.bin二进制文件结构如下0x0000 - 0x0020:start.s的机器码关看门狗、设栈、跳转。0x0020 - 0x0xxx:main.c的机器码配置寄存器、循环。Steppingstone 里的内容就是你通过Makefile或者keil编译生成的binaxf、hex文件的前 4KB 数据说白了就是start.s的内容。内存映射这是初学者最容易混淆的地方。ARM CPU 启动时永远只认地址0x00000000。但是物理上的存储器连接位置是固定的如何让 CPU 在不同模式下看到不同的东西答案是地址重映射。场景 ANOR Flash 启动Bank 0 (nGCS0)连接着外部的 NOR Flash。映射结果硬件直接把NOR Flash映射到0x00000000。执行流CPU 直接从 NOR Flash 读取指令运行。场景 BNAND Flash 启动Bank 0 (nGCS0)虽然原理图上可能还连着 NOR Flash如果有的话但在逻辑上被断开了。Steppingstone (SRAM)原本只能通过特定内部地址访问现在被硬件强制映射到了0x00000000。自动拷贝机制上电复位瞬间NAND Flash 控制器自动启动。它自动将 NAND Flash 中的前 4KB 数据拷贝到这块Steppingstone (SRAM)中。在这个拷贝过程中CPU 处于复位保持状态不运行。拷贝完成后CPU 复位释放开始从0x00000000也就是 Steppingstone 的起始位置执行代码。Bootloader 第一阶段SRAMSRAM既然只有 4KB代码必须极度精简通常由汇编语言编写比如keil提供的S3C2440.s。这 4KB 代码需要在几毫秒内完成以下“规定动作”4.1. 关看门狗 (Disable Watchdog)原因看门狗默认开启如果不在规定时间内“喂狗”它会复位 CPU。启动初期我们没空喂狗所以必须先把它关掉。代码向WTCON寄存器写 0。4.2. 关中断 (Disable Interrupts)原因此时系统刚启动中断向量表还没建立堆栈也没准备好。如果来了中断CPU 跳到乱七八糟的地方就挂了。代码操作 CPSR 寄存器屏蔽 IRQ 和 FIQ。4.3. 初始化系统时钟 (Clock Setup)原因外部晶振通常只有 12MHzCPU 跑得太慢。动作配置 PLL (MPLL)将系统主频 (FCLK) 提升到 400MHz或其他频率并设置分频系数给外设使用。4.4. 初始化 SDRAM这是最关键的一步Steppingstone 只有 4KB跑不完后续代码。我们需要启用板载的大容量内存SDRAM例如 64MB。动作配置存储管理器Bank 6 对应的寄存器设定行/列地址宽度、刷新频率等让 SDRAM 准备好接收数据。4.5. 设置栈 (Stack Setup)原因后续如果要调用 C 语言函数或者进行复杂的逻辑跳转必须有栈空间来保存现场。动作将栈指针 SP (r13) 指向 SRAM 的顶端或者刚刚初始化好的 SDRAM 的某块区域。4.6. 代码搬运核心逻辑这 4KB 代码要把自己完整的 Bootloader或者操作系统内核从 NAND Flash 中读出来搬运到 SDRAM 中。为什么因为 NAND Flash 不能直接运行代码而 4KB SRAM 又太小。实现通过读写 NAND Flash 控制器的寄存器NFCONF,NFCMD,NFADDR,NFDATA循环读取数据并写入 SDRAM 地址通常是0x30000000以后。4.7. 跳转 (Jump to RAM)动作搬运完成后修改 PC 指针跳到 SDRAM 中去执行。指令ldr pc, 0x3000xxxx(使用绝对跳转指令)。结果至此Steppingstone 完成了历史使命CPU 开始在宽阔的 SDRAM 中通过 u-boot 的第二阶段C语言部分继续狂奔。总结图解如果你再看一遍 Mini2440 的启动图脑海中应该有这样一个动态过程上电- 硬件检测 (NAND模式)。硬件动作- NAND Flash 前 4KB自动复制到内部 SRAM。地址映射- 内部 SRAM 变身为地址 0。CPU 运行- 运行 SRAM 里的S3C2440.s。初始化-S3C2440.s初始化外部 SDRAM。搬运-S3C2440.s读取 NAND 中剩余的几百 KB 代码到 SDRAM。跳转- PC 指针跳入 SDRAMLinux 启动之路正式开始。这就是为什么这块小小的 4KB 区域被称为Steppingstone—— 它虽然小却是连接静态存储NAND与动态运行环境SDRAM的唯一桥梁。JLINK 调试很多开发者使用 JLINK配合 J-Flash 或 IDE进行裸机程序调试。你可能会遇到这样的情况为什么我用 JLINK 直接下载程序到 SDRAM (0x30000000) 会失败这需要结合我们上面讲的启动原理来看。6.1 初始化 SDRAM回顾第 4.4 节SDRAM 并不是上电就能用的它需要配置存储控制器寄存器设置列地址、刷新率等之后才能被读写。正常启动时Steppingstone 里的S3C2440.s帮我们完成了初始化 SDRAM 的工作。JLINK 调试时通过 JTAG 连接板子时CPU 通常处于复位或暂停状态S3C2440.s还没来得及运行或者被跳过了。此时 SDRAM 控制器处于未配置状态SDRAM 就是一片荒原根本无法写入数据。6.2 调试脚本 (Init Script) 的作用为了解决这个问题在使用 JLINK调试 S3C2440 时我们必须挂载一个初始化脚本keil里是.ini。这个脚本的作用就是代替 Steppingstone通过 JTAG 指令直接操作 CPU 寄存器关看门狗防止调试一半重启。配置时钟让 CPU 跑快点。初始化存储控制器这是最关键的一步脚本会向 Memory Controller 寄存器写入正确的值瞬间“点亮” SDRAM。6.3 调试的标准流程有了初始化脚本调试流程就变成了连接 JLINKCPU 暂停。运行初始化脚本此时 SDRAM 变为可读写状态。Download将编译好的程序.bin或.elf直接下载到 SDRAM例如0x30000000。Set PC手动将 PC 指针修改为0x30000000。Run程序开始直接在内存中狂奔。总结JLINK 调试其实就是绕过了“NAND - SRAM”的搬运过程利用上帝视角JTAG手动初始化内存并注入代码。
版权声明:本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!

中卫网站推广优化微信小程序开发需要哪些技术

快速体验 打开 InsCode(快马)平台 https://www.inscode.net输入框内输入如下内容: 创建一个性能对比工具,比较document.querySelector与getElementById/getElementsByClassName等传统方法的性能差异。要求:1. 可自定义测试用例;2…

张小明 2026/1/7 3:29:48 网站建设

网站后端开发是什么产品宣传视频怎么制作

wgpu渲染管线实战指南:从三角形到3D世界的构建 【免费下载链接】wgpu Cross-platform, safe, pure-rust graphics api. 项目地址: https://gitcode.com/GitHub_Trending/wg/wgpu wgpu渲染管线是现代图形编程的核心引擎,负责将几何数据转换为屏幕上…

张小明 2026/1/6 21:44:40 网站建设

网站建设资金申请报告北京服装设计公司排名前十强

免费音乐解锁神器:轻松解决加密音频播放难题 【免费下载链接】unlock-music 在浏览器中解锁加密的音乐文件。原仓库: 1. https://github.com/unlock-music/unlock-music ;2. https://git.unlock-music.dev/um/web 项目地址: https://gitcod…

张小明 2026/1/7 0:03:23 网站建设

wordpress里再建一个网站网站是新媒体平台吗

Linly-Talker:暗光环境下的稳定数字人渲染技术解析 在夜间直播间里,灯光昏暗、背景模糊,传统虚拟主播系统往往因面部特征提取失败而出现“嘴不动”“眼神空洞”的尴尬场面。而在远程办公会议中,用户背光或低照度拍摄的照片也常导致…

张小明 2026/1/8 5:59:17 网站建设

网站建设 实施计划做书的封面的网站素材

如何看懂串口里的那一串“乱码”?ModbusRTU报文全解析实战指南你有没有在调试一个温湿度传感器时,打开串口助手,看到屏幕上跳出这样一行数据:01 03 04 00 64 00 1E B9 CB然后一头雾水:这八个字节到底说了啥&#xff1f…

张小明 2026/1/7 12:17:33 网站建设

学做旗袍衣服的网站郑州大搜索网站

下面,我们将看看如何在线程组之间共享和传递变量。 在开发高级JMeter脚本时,很可能您将拥有多个线程组。每个线程组将执行不同的请求。 一个很好的例子是我们需要使用Bearer Tokens对用户进行身份验证。一个线程组执行身份验证并保存令牌。另一个线程组…

张小明 2026/1/10 18:38:42 网站建设