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 开发资源的更多相关文章

  1. Android进阶(二十)AndroidAPP开发问题汇总(四)

    · Android进阶(二十)AndroidAPP开发问题汇总(四) android:layout_width和android:width的区别 基中的android:layout_width和and ...

  2. ETH&EOS开发资源及工具集合(完整汇总版)

    ETH&EOS开发资源及工具集合(完整汇总版) 3113 ETH开发资源篇 一.开发语言 ·         Solidity - 官方推荐以太坊智能合约开发语言,也是目前最为主流的智能合约语 ...

  3. Kinect开发资源汇总

    Kinect开发资源汇总   转自: http://www.sigvc.org/bbs/forum.php?mod=viewthread&tid=254&highlight=kinec ...

  4. 年底发福利了——分享一下我的.NET软件开发资源

    最近建了一个.NET软件开发资源的360网盘共享群,把收集的一些.NET软件开发资源分享给大家,也欢迎大家把好的东东分享一下. 资源主要有:开发工具.控件资源.书籍教程.网页设计.源码资源几大类,也希 ...

  5. fir.im Weekly - 94 个 iOS 开发资源推荐

    距离 2016 年还有 17 个日夜,而你和回家只隔了一张 12306 验证码的距离,祝大家抢票顺利.本期 fir.im Weekly 收集了一些优秀的 GitHub 源码.开发工具和动画特效,希望对 ...

  6. Android SDK和N多Android开发资源

    开发资源 本文收集整理Android开发需要的Android SDK.工具.Android开发教程.Android设计规范,免费的设计素材等. 欢迎大家推荐自己在Android开发过程中用的好用的工具 ...

  7. Windows 8.1 Preview 开发资源汇总

    Microsoft Build 2013开发者大会已经结束,从Session安排上看主要以Windows 8.1为主.我相信大家有已经或多或少的体验过Windows 8.1 Preview了,关于操作 ...

  8. HTML5+CSS3前端开发资源整合

    HTML5+CSS3前端开发资源整合   推个广告 个人网站:http://www.51pansou.com HTML5视频下载:HTML5视频 HTML5源码下载:HTML5源码 meta相关: & ...

  9. Mac和iOS开发资源汇总

    小引 本文主要汇集一些苹果开发的资源,会经常更新,建议大家把这篇文章单独收藏(在浏览器中按command+D). 今天(2013年7月19日)收录了许多中文网站和博客.大家一定要去感受一下哦. 如果大 ...

随机推荐

  1. java基础--继承、实现、依赖、关联、聚合、组合的联系与区别

    继承 指的是一个类或者接口继承另一个类或者接口,而且可以增加自己的新功能. 实现 指的是一个class类实现interface接口. 依赖 简单说,就是一个类中的方法用到了另一个类,一般依赖关系在ja ...

  2. 下载vuejs,Hello Vue(vscode)

    下载vuejs,Hello Vue(vscode) Hello Vue 下载使用vue.js 动图演示 Vue的基本使用步骤  传送门:https://cn.vuejs.org/v2/guide/in ...

  3. ssm+ajax异步请求返回list遍历

    jsp页面 <%@ page language="java" contentType="text/html; charset=UTF-8" pageEnc ...

  4. SpringMvc中@ModelAttribute的运用

    /** * 1. 有 @ModelAttribute 标记的方法, 会在每个目标方法执行之前被 SpringMVC 调用! * 2. @ModelAttribute 注解也可以来修饰目标方法 POJO ...

  5. leetcode 234 回文链表 Palindrome Linked List

    要求用O(n)时间,和O(1)空间,因此思路是用本身链表进行判断,既然考虑回文,本方法思想是先遍历一次求链表长度,然后翻转前半部分链表:然后同时对前半部分链表和后半部分链表遍历,来判断对应节点的值是否 ...

  6. 服务器端-W3Chool:服务器脚本教程

    ylbtech-服务器端-W3Chool:服务器脚本教程 1.返回顶部 1. 服务器脚本教程 从左侧的菜单选择你需要的教程! SQL SQL 是用于访问和处理数据库的标准的计算机语言. 在本教程中,您 ...

  7. Linux_IPtables防火墙详解

    目录 目录 Iptables Iptables结构 规则表 规则链 iptables指令用法详解 综合案例 SNAT 策略 DNAT 策略 Iptables规则的备份和还原 iptables 练习 I ...

  8. 测开之路一百四十九:jinja2模板之宏

    jinja2是python的模板引擎, 在写python web使用的过程中,macro可以节省大量的代码 比如上一篇的渲染页面 <!DOCTYPE html><html lang= ...

  9. 用U盘完成win10系统的安装

    电脑太卡了,每次都要重装,然后每次忘记要从哪里开始动手,都要百度,仅以此篇记录下 目录 1.系统盘准备 2.从U盘启动安装 1.系统盘准备 第一步:在电脑中完成系统盘制作工具的安装,由于它是要依赖.n ...

  10. VS2012下std::function的BUG解决办法

    VS2012版本下std::function存在问题,链接:https://stackoverflow.com/questions/13096162/stdfunction-not-compiling ...