![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
S3C2440
韦东山老是的JZ2440 V3版本开发板
shao15232_1
种树有两个最好的时间节点,一个是十年前,一个是现在!
展开
-
025_ARM常用汇编指令
今天主要讲解一下ARM中常用的汇编指令: 处理器内部传输数据指令 MOVMOV R0, R1 @将寄存器 R1 中的数据传递给 R0,即 R0=R1MOV R0, #0X12 @将立即数 0X12 传递给 R0 寄存器,即 R0=0X12MRSMRS R0, CPSR @将特殊寄存器 CPSR 里面的数据传递给 R0,即 R0=CPSRMSRMSR CPSR, R0 @将 R0 中的数据复制到 CPSR 中,即 CPSR=R0 存储器访问指令...原创 2020-08-19 20:51:25 · 290 阅读 · 0 评论 -
024_Makefile变量分类
Makefile变量分为即时变量: = 定义的变量,或者是+= 右边的变量是即时变量延时变量: := 定义的变量下面举例:#type1:# "=" is immediately variablename1 = zzk curname1 = $(name1) name1 = zuozhongkai #type2:# ":=" delay variablename2 = zzkcurname2 := $(name2)name2 = zuozhon原创 2020-08-17 21:36:43 · 328 阅读 · 0 评论 -
023_一个简单的Makefile例子
今天主要讲解一个简单的Makefile组成以及需要注意的地方:我们的结构很简单:main调用两个文件内部的API。main.c文件调用input.c和calcu.c两个文件来实现输入两个数并打印两个数的和到屏幕上:main.c#include <stdio.h>#include "input.h"#include "calcu.h"int main(int argc, char *argv[]){ int a, b, num; input_i原创 2020-08-17 20:58:31 · 183 阅读 · 0 评论 -
022_压缩指令 tar
tar常用选项:-c(create) 表示创建永安里生成文件包-x 表示可以提取,从文件包中提取文件-t 可以查看压缩的文件,-z 使用gzip方式进行处理,它与”c”结合就表示压缩,与”x”结合表示解压缩-j 使用bzip2方式进行处理,它与”c”结合表示压缩,与”x”结合表示解压缩。-v(overbose) 详细报告tar处理的信息-f(file) 表示文件,后面接着一个文件名。-C <指定目录> 解压到指定目录。tar打包,gzip压缩压缩...原创 2020-08-14 20:56:08 · 380 阅读 · 0 评论 -
022_压缩指令 gzip & bzip2
单个文件的压缩(解压)使用gzip和bzip2多个文件和目录使用targzip的常用选项-l(lsit) 列出压缩文件的内容-k(keep) 在压缩或解压时,保留输入文件-d(decompress) 将压缩文件进行解压缩查看gzip -l 压缩文件名比如: gzip -l pwd.1.gz解压gzip -d pwd.1.gz //解压后源文件就不存在了gzip -kd...原创 2020-08-14 20:54:00 · 558 阅读 · 0 评论 -
021_ find & grep指令
find : 查找符合条件的文件。在哪些目录中查找。 查找的内容。 格式: find 目录名 选项 查找条件 例: find . –name “*.txt” //查找当前目录下, 以”.txt”结尾的文件。// “.”当前目录 //”..”上一层目录, “ ~ ”在当前用户目录下...原创 2020-08-14 20:50:24 · 125 阅读 · 0 评论 -
020_ Makefile 常用函数
字符串替换分析函数$(subst, from, to, text):在text中使用”to”替换”from”。$(patsubst pattern, replacement, text):寻找text中符合”pattern” 的字,用”replacement”替换他们。注:”pattern”和”repalcement”中可以使用通配符。$(strip string):去掉前导和结尾空格,并将中间的多个空格压缩为单个空格。$(findstring find, in):在字符串”in”中...原创 2020-08-14 20:46:46 · 92 阅读 · 0 评论 -
019_ Makefile 通配符
%.c 表示xxx.c文件%.o 表示xxx.o文件 $@:表示规则的目标文件名; $^:表示所有依赖的名字,名字之间用空格隔开; $<:表示第一个依赖的文件名。 %:通配符,它和一个字符串中任意个数的字符相匹配。 ...原创 2020-08-14 20:45:21 · 169 阅读 · 0 评论 -
018_ Makefile初探
Linux中对于大型工程一般会采用Makefile的形式来编写编译的脚本。Makefile主要功能是提供目标和依赖之间的关系。1. Makefile的格式目标 :依赖<tab>指令。例:hello : hello.c gcc -o hello hello.c clean: rm -f hello2.变量Makefile中有两种变量:立即变量:定义时即确定下来。 定义格式:var := xxx 特殊情形: var1 += yyy, yyy在...原创 2020-08-14 20:40:37 · 100 阅读 · 0 评论 -
017_ vim的使用
vim是Linux中一项很重要的文本编辑软件:下面介绍一下用法:原创 2020-08-14 19:36:45 · 111 阅读 · 0 评论 -
Linux之uboot入门(四)---start.s分析
上一篇分析makefile,到uboot的启动代码。也称之为第一阶段。在lds链接脚本中指向cpu/arm920t/start.s&boot_init.s文件。那么我们今天从start.s文件开始分析。首先是硬件相关设定:1、设置CPU工作模式为svc32(这里为什么要设置为SVC32 mode,请参考https://blog.csdn.net/shao15232/article/details/106246517)reset: /* 设置CPU工作模式为SVC32 */原创 2020-05-20 23:14:55 · 358 阅读 · 0 评论 -
Linux之uboot入门(五)---CPU工作模式分析
先要了解ARM的CPU的7种模式是哪些: 用户模式(usr):ARM处理器正常的程序执行状态 快速中断模式(fiq):用于高速数据传输或通道处理 中断模式(irq):用于通用的中断处理 管理模式(svc):操作系统使用的保护模式 数据访问终止模式(abt):当数据或指令预取终止时进入该模式,可用于虚拟存储及存储保护 系统模式(sys):运行具有特权的操作系统任务 ...原创 2020-05-20 22:59:30 · 412 阅读 · 0 评论 -
Linux之uboot入门(三)---make
上一篇我们分析了make config的具体过程。那么第二条指令就是make。在make的过程中,服务器做了哪些编译呢?还是分析Makefile,首先找到all, 这是make的终极目标。第242行可以找到all,他的依赖文件是240行的 $(obj)u-boot.srec $(obj)u-boot.bin $(obj)System.map $(U_BOOT_NAND)我们看到其中之一是u_boot.bin那么接着往下找u_boot.bin的依赖:250行是u..原创 2020-05-15 23:20:38 · 235 阅读 · 0 评论 -
Linux之uboot入门(二)---make 100ask24x0_config
接着上一篇,在生成u_boot.bin文件之前。需要先做make config: make100ask24x0_config然后再make进行编译。本篇我们主要讲一下make 100ask24x0_config 这条指令做了哪些事情。1.首先看一下顶层的Makefile,当执行make 100ask24x0_config这条指令后,Makefile做了什么动作?输入make 100ask24x0_config后,在Makefile中找到100ask24x0_config定...原创 2020-05-14 23:20:00 · 360 阅读 · 0 评论 -
Linux之uboot入门(一)
前段时间因为各种原因,很久都没能上CSDN来写博客。今天从头开始再次撸一把韦东山老师的uboot。首先要对开发板的各种驱动进行安装,这个是每次过很久以后拿起开发板最头疼的事情。我喜欢用韦老师的DNW,下载速度快。所以我们今天就只用这个方式。 安装驱动 首先我们要把板子上电,把SERIAL和USB两个口都链接到PC。这个时候串口会自动更新出来。设置波特率115200即可。板子会有预安装好的u_boot,上电的瞬间可以从secureCRT上面看到log,倒计时3s内按下空格。可以看到如原创 2020-05-12 23:37:21 · 904 阅读 · 0 评论 -
Makefile
原创 2020-01-19 09:50:47 · 116 阅读 · 0 评论 -
016_ JZ2440之u_boot编写
跟着韦东山老师学习JZ2440 u_boot的编写。今天我们自己写一个简易的u_boot来启动kernel。u_boot的启动流程我们默认分为两个阶段:第一阶段 硬件驱动配置。第二阶段 u_boot启动参数设置。接下来我们先分析一下:硬件驱动配置:硬件启动流程1、关看门狗。2、设置CPU的工作时钟频率。(目前设置时钟工作频率是200MHz)...原创 2019-12-30 17:34:28 · 152 阅读 · 2 评论 -
015 JZ2440之U_boot(二)---配置
上一篇我们讲解了如何打补丁,编译,下载和运行。https://mp.csdn.net/postedit/103271216本章开始我们要细分讲解u-boot的启动流程和具体结构分析。本章我们主要讲解在编译之前的配置:首先我们拿到u-boot源码后,解压得到如下图结构:这里我们先不考虑补丁文件。只看源码中的内容。拿到后再README文件中我们可以看到。要编译u_boo...原创 2019-11-27 14:29:50 · 161 阅读 · 0 评论 -
015 JZ2440之U_boot(一)---打补丁
今天我们主要讲如何给JZ2440打补丁。u-boot的主要功能是初始化硬件,然后引导启动内核。类似于我们PC机的BIOS。今天我们先不讲接具体的原理分析。先看如何使用的。首先,我们拿到韦东山老是的补丁。(可以去韦东山老师的百度云盘下载)然后到u-boot官网:http://www.denx.de/wiki/U-Boot/WebHome 找到sourceCode...原创 2019-11-27 11:00:46 · 253 阅读 · 0 评论 -
014 代码重定位(三)---lds脚本解析
接着上一篇的讲解。引入了链接脚本lds后我们今天主要讲解一下lds文件的具体内容是如何配置的。首先我们看下链接脚本的模板:(还是借用韦东山老师的讲课图)我们可以在lds文件中设置我们任意 *.o文件的加载地址。也可以指定先加载哪个文件的内容,后加载什么内容等等。模板中的region、BLOCK(align)、NOLOAD等等这些画横线的基本不用。secname 是...原创 2019-11-18 16:05:10 · 791 阅读 · 0 评论 -
014 JZ2440代码重定位(二)---lds脚本
在上一章中我们引入了为什么要使用代码重定位。那么本章我们要讲解代码重定位的具体实现。在实现的重定位的时候,我们需要引入链接脚本的概念。也就是我们把代码重定位的起始和结束,具体内容的放置等等这些配置放到一个文件中。然后由Makefile在编译的过程中来调用这个 *.lds 文件,然后执行代码的各个段的位置配置。首先我们做了一个实验,在不实用lds链接脚本的情况下,直接在Ma...原创 2019-11-15 13:52:57 · 330 阅读 · 0 评论 -
ATPCS中各寄存器的使用规则及名称
S3C2440属于ARM9,一般在ARM系列的soc中都会有ATPCS这十五个寄存器。下面我们主要讲解一下这十五个寄存器的名称和用法。先看下名字:再看下这些寄存器的用法和功能:特殊寄存器:r0-r3:用作传入函数参数,传出函数返回值。在子程序调用之间,可以将r0-r3用于任何用途。被调用函数在返回之前不必恢复r0-r3。如果调用函数需要再次使用r0-r3内容,则它必须保...原创 2019-11-15 09:40:14 · 1159 阅读 · 0 评论 -
ARM常用汇编指令集
我们经常在调试ARM芯片的时候遇到这样那样问题,但大部分时间需要去看反汇编代码。这时汇编的功底不行就很难看懂里面具体讲的是什么,今天我们需要讲解一些调试过程中常用的汇编指令。常用汇编指令:(1)相对跳转指令b ;跳转bl ;除了跳转之外,还将返回(bl下一条指令的地址)保存在lr寄存器中。...原创 2019-11-15 09:34:25 · 668 阅读 · 0 评论 -
014 代码重定位(一)---概念的引入
我们依然使用的平台是韦东山老师的Jz2440开发板。在了解我们代码重定位之前首先我们需要了解一下S3C2440在开始上电的时候,是如何获取启动代码。然后取指执行的呢。(借用老师上课的原图)首先我们需要了解一下S3C2440的硬件分布:CPU透过内存控制器可以控制SDRAM、NorFlash、片内的SRAM和NAND Flash控制器。也就是CPU把数据指令和地址指令发给...原创 2019-11-13 10:32:12 · 233 阅读 · 0 评论 -
Linux设置编译环境---交叉编译器GCC
在我们开始学习Linux系统开发之前我们需要安装一下code编译环境。arm-linux-gcc 编译器。第一步,我们需要先安装基本的开发环境,命令如下:sudo apt-get install build-essential安装完成后,还要分别安装bison、flex,他们分别是语法、词法分析器。命令如下:sudo apt-get install bison flex...原创 2019-03-12 20:29:07 · 3028 阅读 · 0 评论 -
Ubuntu12.04 su失败
在我们安装好Ubuntu12.04后,我们会设置用户名和密码。奇怪的是当我们登入桌面后,打开terminal后输入su命令后,输入我们设置的用户密码。会提示如下:这个时候不要着急,因为su是被锁住的。和我们的用户密码不同。这个时候我们更改一下su密码就可以了。如图:输入指令sudo passwd然后输入一下你的用户密码。(这个密码应该是错的,估计可以随便输入,大家可以...原创 2019-06-17 13:36:49 · 200 阅读 · 0 评论 -
Ubuntu 安装courier new字体
个人喜欢courier new 字体故使用ubuntu也喜欢更改这个字体,但是系统没有只能自己安装了。输入指令:sudo apt-get install ttf-mscorefonts-installer。安装过程中会有一个界面弹出,按一下tab键选中确认,然后下一个对话框再次确认就可以了。选中后更改一下字体大小就可以了。...原创 2019-06-17 14:02:17 · 2575 阅读 · 0 评论 -
Ubuntu 远程登陆之SSH
我们安装好Ubuntu后喜欢用secureCRT来登录或者tty,那么我们的Ubuntu就需要安装远程登录服务器。我们今天主要使用:SSH远程登录服务器。输入指令:sudo apt-get install openssh-server.安装完成后就可以了。然后输入Ubuntu的用户密码,就可以登录进去了。也可以重启一下ssh:sudo /etc/init.d/ssh s...原创 2019-06-17 14:10:45 · 214 阅读 · 0 评论 -
arm-linux-gcc command not found
按照韦东山老师的方法,安装了arm-linux-gcc-3.4.5-glibc-2.3.6.tar.bz2。具体方法请参考《嵌入式Linux应用开发完全手册》P25-P26。安装完成后执行arm-linux-gcc -v后,发现正常了。但是当我重启ubuntu12.04后再次执行这个命令的时候,系统提示找不到此命令。"arm-linux-gcc:未找到命令"这样的提示字眼。于是我就...原创 2019-06-17 16:56:23 · 1759 阅读 · 0 评论 -
001 S3C2440 GPIO口输出状态控制
学习韦东山老师的视频这么久,终于进入到实操阶段了。今天就先点亮第一个LED灯来感受一下Linux下的代码编辑编译与我们windows的不同。首先今天我们只用汇编来写,不用C语言。在写代码之前我们要搞定两个事情:第一、 我们的原理图上面,LED要如何才能点亮。由原理图可以看出来,我们采用的是常规的灌电流模式。只要S3C2440这边的GPF4设置为普通的GPIO口输...原创 2019-07-18 23:40:11 · 288 阅读 · 0 评论 -
003 S3C2440 clock设置
在前面我们已经分别用汇编和C语言控制了GPIO口了。现在我们要设置一下S3C2440上电后时钟的配置,之前没有配置的时候用的都是系统默认值。我们先了解一下S3C2440上电后,clk的上电流程:由上图我们可以看出,我先有OM[3:2]设置好CPU使用哪种振源方式,这里我们选择用crystal。也就是设置00mode。然后power电压稳定后nRESET才放开LOW leve...原创 2019-08-21 16:05:39 · 269 阅读 · 0 评论 -
004 uart裸机编程
在前面学习了clock设置的基础上,我们现在对uart配置。最后达到的效果是我们可以使用printf函数来输出任意格式的数据,包括字符串等等。第一步还是要从spec上面配置好uart的寄存器。首先查看原理图,我们使用的是uart0。接下来我们要设置GPH2/3为uart0端口,spec上面可以查到设置的寄存器。由于流控什么的都不需要设置,故我们只要设置uart使用的基本功...原创 2019-09-03 09:44:23 · 282 阅读 · 0 评论 -
005 sdram裸机编程
前面我们使用过uart来打印输出信息。今天我们来学习一下sdram的使用。sdram的功能相当我们在使用PC机的时候里面插的ram,当然我们S3C2440在芯片内部会有一个自带的SRAM(大小为4K),当这个自带的sram不够用的时候,就会需要使用我们外接的sdram了。缺点是sdram在使用的时候,需要先把数据搬进去,处理好以后再搬出来给到cpu使用,与内部sram相比降低了运行...原创 2019-09-06 10:26:07 · 156 阅读 · 0 评论 -
Ubuntu12.04和Win7之间建立Samba服务---共享文件夹
刚开始学习Linux,入门的时候会遇到很多问题。在这里记录下来,希望其他初学者和我一样,都能在记录中学习更多,少走弯路!进入正题,首先安装Ubuntu12.04,ISO镜像去下面地址下载:http://mirrors.aliyun.com然后装机Ubuntu12.04,装机教程如下:https://blog.csdn.net/hong2511/article/details/812...原创 2019-03-11 20:24:59 · 663 阅读 · 2 评论