zoukankan      html  css  js  c++  java
  • 十、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 去调用此工具链编译
     1 # 获取当前工作目录
     2 CURRDIR = $(shell pwd)
     3 
     4 # 头文件所在目录
     5 INCDIR = $(CURRDIR)
     6 
     7 # 交叉编译工具链的绝对路径
     8 CROSS_COMPILE = /home/arm/arm_work/s3c2440/tools/gcc-3.4.5-glibc-2.3.6/bin/arm-linux-
     9 
    10 # 编译器工具
    11 AS            = $(CROSS_COMPILE)as
    12 LD            = $(CROSS_COMPILE)ld
    13 CC            = $(CROSS_COMPILE)gcc
    14 CPP            = $(CC) -E
    15 AR            = $(CROSS_COMPILE)ar
    16 NM            = $(CROSS_COMPILE)nm
    17 STRIP        = $(CROSS_COMPILE)strip
    18 OBJCOPY        = $(CROSS_COMPILE)objcopy
    19 OBJDUMP        = $(CROSS_COMPILE)objdump
    20 
    21 # 编译器标识位设置
    22 CFLAGS   =
    23 AFLAGS   =
    24 LDFLAGS  =
    25 CFLAGS    =
    26 AFLAGSL    =
    27 
    28 # 目标文件设置
    29 objs := startup.o
    30 
    31 
    32 # 执行编译的过程
    33 int.bin: $(objs)
    34     $(LD) -Ttext 0x00000000 -o int_elf $^
    35     $(OBJCOPY) -O binary -S int_elf $@
    36     $(OBJDUMP) -D -m arm int_elf > int.dis
    37 
    38 %.o:%.c
    39     $(CC) -Wall -O2 -c -o $@ $<
    40 
    41 %.o:%.S
    42     $(CC) -Wall -O2 -c -o $@ $<
    43 
    44 clean:
    45     rm -f int.bin int_elf int.dis *.o
    • 测试一下代码
     1 .text
     2 .global _start
     3 
     4 _start:
     5     LDR     R0,=0x56000050
     6     MOV     R1,#0x00000100
     7     STR     R1,[R0]
     8     LDR     R0,=0x56000054
     9     MOV     R1,#0x00000000
    10     STR     R1,[R0]
    11 
    12 MAIN_LOOP:
    13     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 中,运行于内存中
  • 相关阅读:
    vb 使用Cystal Reports 9小例子
    VB Export sample
    c++文件結束符
    初学PHP:用post传递checkbox
    VB 图片在数据库的导入与导出
    vb 事务sample
    linux查找进程并杀掉进程
    WebRequest 对象的使用
    Asp操作Cookies(设置[赋值]、读取、删除[设置过期时间])
    .net webrequest应用
  • 原文地址:https://www.cnblogs.com/kele-dad/p/10946348.html
Copyright © 2011-2022 走看看