摘要:
3.5根文件系统的制作 根文件系统其实包含两个含义:1.是根。2.是文件系统。 根:就是第一个的意思。必须有的。 文件系统:就是我们在编译linux内核看到的: 上面的目录和文件就是文件系统的。 接下来我们就来创建文件系统: 创建目录: 1.2.创建设备文件: 这里我们需要下面文件: 1.3.加入配 阅读全文
摘要:
3.4.嵌入式linux内核制作 前面我们已经制作了uboot,接下来是制作kernel。 首先进入内核源码,执行make distclean.清除先前编译产生的文件。 注意配置内核的时候多了一个ARCH=arm的条件。 回车之后会进入arm的配置菜单: 就像我们前面配置linux内核一样,我们也会 阅读全文
摘要:
3.3.Uboot的使用 解压uboot的压缩包得到uboot的工程文件uboot,进入uboot,打开Makefile文件,搜索自己的开发板的类型。我的是OK6410 256的。 然后执行配置文件: 接着执行一下的命令进行编译: 编译完成的截图: 完成之后,我们会在我们的uboot的目录看待生成u 阅读全文
摘要:
2.3NandFlash的操作 1.NandFlash分类: 2.MLC和SLC对比: 3.信号引脚: Nandflash的读: 页读:页地址 随机读:页地址+列地址 今天是要实现页读:需要页的地址。 我们来看芯片手册K9F2G08U0A.pdf:找到桉叶读的工作原理图: 寄存器NFCONT: 在这 阅读全文
摘要:
2.2中断的深度剖析 中断生命周期: 中断源: 上面的中断的总数在2440是加上子中断的。在6410就全部列出的。 下面是过滤的过程分析: 中断处理 4.1:2440的中断处理: 4.2:中断处理在6410和210: 上面的:我在初始化中断控制器的时候,就要告诉中断控制器,当串口中断产生的时候,要跳 阅读全文
摘要:
2.1MMU的知识 Loop.c的代码是: Loop.c的代码是: 最后两个程序的运行结果: 我们看到两个程序里的地址是一样的。这是怎么回事呢!? 这就是我们今天的重点:MMU内存管理单元。 MMU的作用:两个 上面是虚拟地址和物理地址的转化。 在上面的两个程序中,输出的都是虚拟地址,MMU会将虚拟 阅读全文
摘要:
13.c和汇编的相互调用 新建light.c: 修改start.S: 修改Makefile:加light.o 最后make成功,烧写成功。 同样,我们也可以在C函数里调用我们的汇编里面的函数: 修改start.S:把light_led申明为global: 在light.c中被调用: Make编译烧写 阅读全文
摘要:
12.bss段的初始化 在C代码:有初始化全局的数据段,局部的栈,malloc部分的堆,未初始化的全局的bss段。 从上面的编译的信息知道: Bss段的起始地址:0001052c Bss段的结束地址:00010534 我们的hello变量的地址:00010530是落在bss段里的地址的。所以是存在b 阅读全文
摘要:
11.栈的初始化 1.栈的概念: 2.满/空栈: 1.3:升/降栈: 1.4.栈桢的理解: 局部变量是保存在栈中的: Stack.c: 编译和反汇编: 传递参数: Func1: 保存寄存器的值: Main: Func1: Func2: 阅读全文
摘要:
阅读全文
摘要:
9.内存的了解 内存由于具备访问速度快,访问方式简单等优点,成为了PC或者是嵌入式硬件平台上不可或缺的元件。在开始学习如何使用内存之前,非常有必要先了解一下内存的分类: 1.1内存分类: 1.2 DRAM分类 2.内存内部结构: 包括:表结构,L-Bank,寻址信息(包括L-Bank选择信号和行地址 阅读全文
摘要:
8.时钟初始化 ARM系统时钟初始化: 这就需要知道什么是时钟脉冲信号,什么是时钟频率,什么是时钟源。 时钟脉冲信号: 时钟脉冲信号:按一定的电压幅度,一定的时间间隔连续发出的脉冲信号。时钟脉冲信号是时序逻辑的基础,它用于决定逻辑单元中的状态何时更新。数字芯片中众多的晶体管都工作在开关状态,它们的导 阅读全文