![](https://img-blog.csdnimg.cn/20201014180756926.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
国嵌嵌入式
文章平均质量分 53
LuckyDog0623
来自一个社会底层打工人的呐喊
展开
-
第二季--上学期--专题8 不用内存怎么行--01从内部看内存
知识点1、内存分类1.1 sram1.2 dram 1.2.1 sdram 1.2.2 ddr 1.2.3 ddr22、内存内部结构2.1 表结构2.2 L-Bank2.3 寻址信息 2.3.1 L-BANK选择信号 2.3.2 行地址 2.3.3 列地址sram:它是一种具有静止存取功能的内存,不需要定期刷新电路就能保存它内部的存储的数据。存储速度快,但是功耗大,成本高,常用作存储容量不高,但是存储速度快的场合,例如steppi...原创 2022-04-30 22:48:55 · 271 阅读 · 0 评论 -
第二季--上学期--专题9 代码搬移sram->sdram
1、arm启动流程回顾2440(1)从nand flash中的前4KB拷贝到sram(垫脚石)中进行运行。(2)然后pc指针指向0地址,执行垫脚石的第一条指令;(3)接着运行这4KB的指令,这4kb的内容需要完成必要的初始化工作:①内存sdram初始化好,nand flash初始化好;②再把整个nand flah上的程序拷贝到内存。③剩下的代码就在内存中运行了。210开发板注意210和2440有一些区别,多出来一个srom2、代码移植(1)确定起点(2)相原创 2022-04-30 18:33:58 · 394 阅读 · 0 评论 -
第二季--上学期--专题10 C语言环境初始化--05 C与汇编混合编程
知识点:1、汇编调用C函数2、C函数调用汇编函数3、C内嵌汇编1、为什么需要混合编程(1)执行效率(2)能够直接控制寄存器2、汇编调用C函数ldr pc, =gboot_main 在汇编脚本中直接改变pc指针即可3、C函数调用汇编函数.global _start.global light_ledint gboot_main(){ light_led();直接调用汇编脚本中的标识即可,但是同时需要light_led申明全局 return 0; }...原创 2022-04-30 18:34:37 · 1193 阅读 · 0 评论 -
第二季--上学期--专题10 C语言环境初始化--03跳转C大门
1、采用什么方式跳跃?--跳转到C代码相对跳转: B BL绝对跳转:pc =xxxx2、检验是否跃成功?sram跳转到ram直接跳转:直接将需要跳转的地址赋值给pc指针相对跳转:由于逻辑程序是通过sram中拷贝到ram中的,所以sram中也有main函数ldr pc, =gboot_mainMakefileall: start.o main.o arm-linux-ld -Tgboot.lds -o gboot.elf $^ arm-linux-objc...原创 2022-04-30 10:45:04 · 787 阅读 · 0 评论 -
第二季--上学期--专题10 C语言环境初始化--02bss段初始化
1、bss段bss段为什么要清零?bss段的起始地址和结束地址是如何确定的?在boot裸板开发的bss段清零工作和应用程序的bss段清零工作有什么区别?初始化的全局:数据段局部:栈malloc:堆未初始化全局:bss段clean_bss: ldr r0, =bss_start ldr r1, =bss_end cmp r0, r1 moveq pc, lrclean_loop: mov r2, #0 str r2, [r0]...原创 2022-04-30 10:19:12 · 296 阅读 · 0 评论 -
第二季--上学期--专题10 C语言环境初始化--01栈初始化
1、参考链接ARM——栈 - dongry - 博客园【精华】程序员的自我修养视频教程_哔哩哔哩_bilibili2、栈的初始化1、概念解析:栈桢---sp栈指针 fp栈基址栈:栈是一种具有后进先出的数据组织方式,也就是说后放进去的数据后面取出来(也可以是数据结构体对象)。栈底是第一个进栈的数据所在的位置,栈顶是最后一个数据所处在的位置。数据组织有:链表、图、树等等。我们把数据的组织实现方式当成黑盒使用即可。pop(stack,&data)push(stack,&原创 2022-04-29 21:11:21 · 1483 阅读 · 0 评论 -
原来实现系统调用那么简单
系统调用:执行read系统调用会产生swi指令,把系统调用编号放入r7寄存器当中(1)系统调用入口地址(2)取出系统调用编号放入scno中(3)找到系统调用表 .type sys_call_table, #objectENTRY(sys_call_table)#include "calls.S"系统调用表(4)如何实现新的系统调用①在printk中实现函数体void sys_pk(){ printk("this is a new sys...原创 2021-10-19 20:11:51 · 93 阅读 · 0 评论