十、S3C2440 开发资源
10.1 S3C2440 内部资源
- 1.2V 内核供电, 1.8V/2.5V/3.3V 储存器供电, 3.3V 外部 I/O 供电,具备 16KB 的指令缓存和 16KB 的数据缓存和 MMU
- 的微处理器
- 外部存储控制器(SDRAM 控制和片选逻辑)
- LCD 控制器(最大支持 4K 色 STN 和 256K 色 TFT)提供 1 通道 LCD 专用 DMA
- 4 通道 DMA 并有外部请求引脚
- 3 通道 UART(IrDA1.0, 64 字节发送 FIFO 和 64 字节接收 FIFO)
- 2 通道 SPI
- 1 通道 IIC 总线接口(支持多主机)
- 1 通道 IIS 总线音频编码器接口
- AC’97 编解码器接口
- 兼容 SD 主接口协议 1.0 版和 MMC 卡协议 2.11 兼容版
- 2 通道 USB 主机/1 通道 USB 设备(1.1 版)
- 4 通道 PWM 定时器和 1 通道内部定时器/看门狗定时器
- 8 通道 10 位 ADC 和触摸屏接口
- 具有日历功能的 RTC
- 摄像头接口(最大支持 4096×4096 像素输入;2048×2048 像素输入支持缩放)
- 130 个通用 I/O 口和 24 通道外部中断源
- 具有普通,慢速,空闲和掉电模式
- 具有 PLL 片上时钟发生器
10.2 JZ2440 烧写程序
10.2.1 系统安装
- 镜像在 PC 上
- usb 加载启动程序 ---> 加载 uboot(tftp 下载程序(网络)/ fastboot 下载程序(网络))--->nand
- 镜像在 SD 卡上
- SD 卡启动 uboot(镜像在 SD 卡中)--->nand
- 镜像都存于 SD 卡中
- 存储器烧写器/编程器
10.2.2 S3C2440 两种启动方式
- nand 启动:S3C2440 片内 Stepping Stone Controller,启动时,通过外部针脚的电平高低的硬件配置来获得页大小,数据宽度,地址周期等要素,从而可以在启动时能够完成读取 Nandflash 前 4 K代码到 SRAM
- nor 启动:Nor 中存放的代码可以直接运行,需要事先烧录程序到 NorFlash 中
10.2.3 安装 openjtag 驱动
使用 OpenJTAG 接好线时, 图示如下:

插上后,会识别处端口,然后安装 100ask 的驱动,但是 WIN10 会强制驱动签名,需要关闭 WIN10 系统的强制驱动签名。具体关闭方法,自行百度。
10.2.3 安装 oflash
- 安装 OpenOCD with GUI setup.exe
- 在命令行中输入: oflash 即可进入 oflash
10.2.4 刷写
- 在命令行下,输入 oflash 命令即可进入刷写
10.2.5 ubuntu 环境配置
- 最基本 VIM 等配置
- 交叉编译工具链配置,可以用 JZ2440 配套的工具链,也可以用 crosstool-ng 自己生成一套交叉编译工具链,裸机就采用提供的工具链
- 在 ubuntu 的自己的建立的工作目录下,解压 tar -jxvf arm-linux-gcc-3.4.5-glibc-2.3.6.tar.bz2
- 写一个简单的复用的 Makefile 去调用此工具链编译
# 获取当前工作目录
CURRDIR = $(shell pwd) # 头文件所在目录
INCDIR = $(CURRDIR) # 交叉编译工具链的绝对路径
CROSS_COMPILE = /home/arm/arm_work/s3c2440/tools/gcc-3.4.-glibc-2.3./bin/arm-linux- # 编译器工具
AS = $(CROSS_COMPILE)as
LD = $(CROSS_COMPILE)ld
CC = $(CROSS_COMPILE)gcc
CPP = $(CC) -E
AR = $(CROSS_COMPILE)ar
NM = $(CROSS_COMPILE)nm
STRIP = $(CROSS_COMPILE)strip
OBJCOPY = $(CROSS_COMPILE)objcopy
OBJDUMP = $(CROSS_COMPILE)objdump # 编译器标识位设置
CFLAGS =
AFLAGS =
LDFLAGS =
CFLAGS =
AFLAGSL = # 目标文件设置
objs := startup.o # 执行编译的过程
int.bin: $(objs)
$(LD) -Ttext 0x00000000 -o int_elf $^
$(OBJCOPY) -O binary -S int_elf $@
$(OBJDUMP) -D -m arm int_elf > int.dis %.o:%.c
$(CC) -Wall -O2 -c -o $@ $< %.o:%.S
$(CC) -Wall -O2 -c -o $@ $< clean:
rm -f int.bin int_elf int.dis *.o
- 测试一下代码
.text
.global _start _start:
LDR R0,=0x56000050
MOV R1,#0x00000100
STR R1,[R0]
LDR R0,=0x56000054
MOV R1,#0x00000000
STR R1,[R0] MAIN_LOOP:
B MAIN_LOOP
在工作目录下执行 make 命令:

10.2.6 烧写
- cmd 窗口进入待下载 bin 文件的目录,若是文件在虚拟机上,通过 samba 或是 ssh 将文件拷贝出来
- 使用 oflash init.bin 命令

- 选择下载模式 OpenJTAG

- 选择 CPU:S3C2440

- 选择nandFlash(裸机) 或者 norFlash,根据当前拨码开关连接的哪个设备决定

- 选择要烧写的起始地址(裸机都是0)

10.2.7 OpenOCD 调试
- 打开 OpenOCD GUI for OpenJTAG

- Manual 中的选择:
- Interface:openjtag
- Target:samsung_s3c2440
- OpenOCD:
- Work Dir:选择自己要调试的 bin 文件所在的目录
- 点击 Connect 进行连接

- 点击 telnet 进入命令行(注意要将操作系统的 telnet 客户端服务给打开,不然点了没反应)

- 执行命令:
- halt:挂起命令,也可以中断目标板的运行
- step [address]:单步执行,如果指定了 address,则从 address 处开始执行
- reset:复位目标板
- mdw ['phys'] <addr> [count] 显示从(物理)地址 addr 开始的 count(缺省是 1)个字(4 字节),如 mdw 0x00000004 4
- mdh ['phys'] <addr> [count] 显示从(物理)地址addr 开始的count(缺省是1)个半字(2字节)
- mdb ['phys'] <addr> [count] 显示从(物理)地址 addr 开始的 count(缺省是 1)个字节
- mww ['phys'] <addr> <value> 向(物理)地址 addr 写入一个字,值为 value
- mwh ['phys'] <addr> <value> 向(物理)地址 addr 写入一个半字,值为 value
- mwb 'phys'] <addr> <value> 向(物理)地址 addr 写入一个字节,值为 value
- poll:查询目标板当前状态
- resume [address]:恢复目标板的运行,如果指定了 address,则从 address 处开始执行
- bp <addr> <length> [hw] 在地址 addr 处设置断点,指令长度为 length, hw 表示硬件断点
- rbp <addr> 删除地址 addr 处的断点内存访问指令(Memory access commands)
- load_image <file> <address> [‘bin’|‘ihex’|‘elf’]
- 将文件<file>载入地址为 address 的内存,格式有‘bin’、‘ihex’、‘elf’
- dump_image <file> <address> <size>
- 将内存从地址 address 开始的 size 字节数据读出,保存到文件<file>中
- verify_image <file> <address> [‘bin’|‘ihex’|‘elf’]
- 将文件<file>与内存 address 开始的数据进行比较,格式有‘bin’、‘ihex’、‘elf’
- reg 打印寄存器的值
- arm7_9 fast_memory_access ['enable'|'disable']:使能或禁止“快速的内存访问”
- arm mcr cpnum op1 CRn op2 CRm value 修改协处理器的寄存器
- arm mrc cpnum op1 CRn op2 CRm 读出协处理器的寄存器
- arm920t cp15 regnum [value] 修改或读取 cp15 协处理器的寄存器
- virt2phys virtual_address 获得虚拟地址对应的物理地址
10.3 ARM 程序启动过程

- S3C2440 内部没有 iROM。有两种启动方式:nandflash 启动,norflash 启动
- 以后设计的 SOC 内部都有 iROM,用来初始化 SOC 内部资源,然后在启动介质中的程序
- 内部 iROM 可以启动固化程序,判断启动方式:USB,NANDFLASH,SD card 等
10.4 存储器比较
10.4.1 内存
- SDRAM:静态内存,特点就是容量小、价格高,优点是不需要软件初始化直接上电就能用
- DRAM:动态内存,特点就是容量大、价格低,缺点就是上电后不能直接使用,需要软件初始化后才可以使用
- 单片机中,内存需求量小,而且希望开发尽量简单,适合全部用 SRAM
- 嵌入式系统和 PC 机:程序和数据都是在内存中运行的,内存需求量大,使用的是 DRAM
10.4.2 外存
- NorFlash:特点就是容量小,价格高,优点是可以和 CPU 直接总线式相连,CPU 上电后可以直接读取
- NandFlash:与硬盘一样,特点是容量大、价格低,缺点是不能总线式访问,需要初始化,然后通过时序接口读写
- 单片机中:程序简单固定,适合使用 NorFlash,直接存储程序运行,一般是集成到单片机中
- 嵌入式系统和 PC 机:程序多样化,程序的存储态是存入在 NandFlash 中,运行于内存中
十、S3C2440 开发资源的更多相关文章
- Android进阶(二十)AndroidAPP开发问题汇总(四)
· Android进阶(二十)AndroidAPP开发问题汇总(四) android:layout_width和android:width的区别 基中的android:layout_width和and ...
- ETH&EOS开发资源及工具集合(完整汇总版)
ETH&EOS开发资源及工具集合(完整汇总版) 3113 ETH开发资源篇 一.开发语言 · Solidity - 官方推荐以太坊智能合约开发语言,也是目前最为主流的智能合约语 ...
- Kinect开发资源汇总
Kinect开发资源汇总 转自: http://www.sigvc.org/bbs/forum.php?mod=viewthread&tid=254&highlight=kinec ...
- 年底发福利了——分享一下我的.NET软件开发资源
最近建了一个.NET软件开发资源的360网盘共享群,把收集的一些.NET软件开发资源分享给大家,也欢迎大家把好的东东分享一下. 资源主要有:开发工具.控件资源.书籍教程.网页设计.源码资源几大类,也希 ...
- fir.im Weekly - 94 个 iOS 开发资源推荐
距离 2016 年还有 17 个日夜,而你和回家只隔了一张 12306 验证码的距离,祝大家抢票顺利.本期 fir.im Weekly 收集了一些优秀的 GitHub 源码.开发工具和动画特效,希望对 ...
- Android SDK和N多Android开发资源
开发资源 本文收集整理Android开发需要的Android SDK.工具.Android开发教程.Android设计规范,免费的设计素材等. 欢迎大家推荐自己在Android开发过程中用的好用的工具 ...
- Windows 8.1 Preview 开发资源汇总
Microsoft Build 2013开发者大会已经结束,从Session安排上看主要以Windows 8.1为主.我相信大家有已经或多或少的体验过Windows 8.1 Preview了,关于操作 ...
- HTML5+CSS3前端开发资源整合
HTML5+CSS3前端开发资源整合 推个广告 个人网站:http://www.51pansou.com HTML5视频下载:HTML5视频 HTML5源码下载:HTML5源码 meta相关: & ...
- Mac和iOS开发资源汇总
小引 本文主要汇集一些苹果开发的资源,会经常更新,建议大家把这篇文章单独收藏(在浏览器中按command+D). 今天(2013年7月19日)收录了许多中文网站和博客.大家一定要去感受一下哦. 如果大 ...
随机推荐
- LR报:Error 27796 Failed to connect to server
原错误信息: Action.c(58): Error -27796: Failed to connect to server "10.1.44.68:7013": [10048] ...
- RF通过命令执行用例及自定义报告与日志的位置
1.执行整个项目下的所有用例: pybot 项目路径.例如: pybot D:\robotPS:robot项目里面所有用例 2.执行某个suit中的所有用例: pybot 项目路径\suit文件名称. ...
- 洛谷P5022&P5049 旅行(及其数据加强版)
旅行(不是加强版) 加强版 加强版数据范围: 我们注意到 也就是说要么是个树,要么是个基环树 60pts 这60分是个树,可以简单的贪心想到每次都走子树中编号最小的那个,并且把1作为根 dfs练手题 ...
- leetcode 53. Maximum Subarray 、152. Maximum Product Subarray
53. Maximum Subarray 之前的值小于0就不加了.dp[i]表示以i结尾当前的最大和,所以需要用一个变量保存最大值. 动态规划的方法: class Solution { public: ...
- Mac使用SSH连接远程服务器
1. 终端通过 ssh 连接远程服务器 ssh -p 36622 root@localhost 2. 文件上传下载 上传 scp 下载 scp 3. 客户端 FinalShell(推荐) FileZi ...
- OpenStack 实现技术分解 (6) 通用库 — oslo_log
目录 目录 前文列表 扩展阅读 日志级别 oslolog 初始化设置 DEMO oslolog 的相关配置项 oslolog 的日志级别 oslolog 的使用技巧 推荐使用 LOGdebug 的地方 ...
- Delphi XE2 之 FireMonkey 入门(34) - 控件基础: TFmxObject: 克隆对象
Delphi XE2 之 FireMonkey 入门(34) - 控件基础: TFmxObject: 克隆对象 有两个和克隆相关的方法: Clone().CloneChildFromStream(). ...
- Spring Cloud的几个组件
在微服务架构中,需要几个基础的服务治理组件,包括服务注册与发现.服务消费.负载均衡.断路器.智能路由.配置管理等,由这几个基础组件相互协作,共同组建了一个简单的微服务系统.一个简答的微服务系统如下图: ...
- oracle dis系列课程总结
oracle dis系列课程总结 1 bbed安装和介绍 --1 bbed的安装--(Oracle Block Brower and EDitor Tool) 2 controlfile 丢失的恢复 ...
- CSS3—— 分页 框大小 弹性盒子 多媒体查询 多媒体查询实例
分页 网站有很多个页面,就需要使用分页来为每个页面做导航 点击及鼠标悬停分页样式 圆角样式 悬停过度效果 带边框的分页 分页间隔 分页字体大小 居中分页 面包屑导航 框大小 box-sizing 属性 ...