weiqi7777

基于S3C6410的ARM11学习(十三) C语言环境初始化

如今,汇编的部分,就剩下最后一步了。C语言环境初始化。因为后面的代码要用C语言来写了。毕竟C语言编写比汇编要容易对了,而且c程序具有易读性。C程序要运行

基于S3C6410的ARM11学习(十二) 代码拷贝及led测试输入日志标题

之前已经将ddr进行初始化了,这样就可以使用ddr了。首先就要将代码从steppingstone拷贝到ddr中。最后在ddr中运行程序。如果外

基于S3C6410的ARM11学习(十一) DDR初始化

之前的程序都是在内部的steppingstone中运行的。但是steppingstone的大小是很小的。ARM11只有8K的大小。这么小的空间,要运行大型程序肯定是不行的。所以就需要外部的存储器。ARM11的外部存储器用的是ddr。所以就要对ddr进行初始化,同时

基于S3C6410的ARM11学习(十) 时钟初始化

之前已经用led验证了核心初始化的代码是可以用的了。接着就要进行到下一步,这一步就是时钟初始化,因为在时钟初始化之前,CPU的系统时钟都是跑在外部晶振12M上的,这速度也太慢了,S3C6410可是跑在600多M时钟上的。所

基于S3C6410的ARM11学习(九) 点亮led

之前已经对S3C6410的核心初始化完成了,但是这个也只是完成了,但是程序到底对不对了,还需要验证。最简单的验证方法是什么了,就是点亮led。如果在核心初始化完成后,我们写程序去点亮了led,就说明初始化代码是没有问题。&

基于S3C6410的ARM11学习(八) 核心初始化之设置外设基地址

下面就是核心初始化的最后一个了。外设基地址初始化。这个操作是告诉CPU外设的基地址是多少。之前,对这个很疑惑,外设的基地址对于芯片来说,不是已经固定了,还要告诉他基地址是多少干嘛了。STM32就不用这一步操作。这个时候,就

基于S3C6410的ARM11学习(七) 核心初始化之关闭MMU和CACHE

在关闭了所有中断后,就要关闭MMU和CACHE了。因为这个时候,还在初始化环境,这两个东西是用不到的。所以就需要把他们都关闭,免得影响我们的初始化。MMU是MemoryManagementUnit的缩写,中文名是存储器管理单元。主要是两个功能:1

基于S3C6410的ARM11学习(六) 核心初始化之关闭所有中断

上一次,我们完成了核心初始化之关闭看门狗了。下面就要关闭所有中断了。因为这个时候还在初始化整个硬件环境,应用程序还没有开始跑,所以是不希望有中断产生来打断CPU工作的。中断是嵌入式系统中很重要的东西了。因为有了这个东西,可以使CPU解放出来,做更多的

基于S3C6410的ARM11学习(五) 核心初始化之关闭看门狗

之前已经完成了设置中断向量表和设置处理器模式。下一步,就是要关闭看门狗。看门狗,这个东西,在嵌入式系统里面是很常见的一个东西。这个是芯片预先做好的硬

基于S3C6410的ARM11学习(四) 核心初始化之设置处理器模式

之前已经设置中断向量表了,下面就要进行设置处理器的模式。对于ARM11,有8种模式,不同的模式,权限是不一样的。在bootloader开发的时候,我们需要将处理器的模式设置为Supervisor模式,即SVC模式。这样,权限就高了,可以访问ARM的所有资源。

基于S3C6410的ARM11学习(三) 核心初始化之设置中断向量表

前面将流程搞清楚后,下面就开始进行按照顺序来编写程序了。第一步就是进行中断向量表的设置。在ARM11中,中断向量表叫做异常向量表。 

基于S3C6410的ARM11学习(二) bootloader开发准备

程序之旅,首先就是要写bootloader。对于我们这种初学者来说,肯定是要去参考行业老大uboot的代码了。看看别人写的bootloader的流程是怎么样的。毕竟,ARM11和STM32是不一样的,执行main函数之前的工作都需要自己写代码,而不像开发STM32,直接调用ST

Linux shell 学习

在学习uboot的makefile的时候,发现有很多东西看不懂,因为包含了很多linuxshell的一些知识,本着什么不会,就学什么,所以先来学习一下linuxshell。参考的是网易云课堂的北大青鸟的linuxshell视频教程。1、Shell命令的组合使用三

关于地址加1的问题

在学习S3C6410MMU的地址映射的时候,竟然被地址加1的问题给卡住了。先贴源代码voidcreate_page_table(void){unsignedlong*ttb=(unsignedlong*)0x50000000;unsignedlongvaddr,paddr;vaddr=0x50000000;paddr=0x50000000;while(vaddr<0x54000000){*(ttb+(vaddr>>2

基于S3C6410的ARM11学习(一) 基础知识

手上有一块OK6410的板子,就想起来花点时间学习下经典的ARM系列ARM11。了解一下ARM11的开发流程,以及怎么跑系统。ARM11和之前学习的STM32的开发是很不一样的。STM32,都是把代码烧到STM32芯片FLASH中,然后代码从FLASH中执行,而且程序执行是不需要外部挂ram的,因为芯