十、S3C2440 开发资源

发布者:未来感觉最新更新时间:2023-07-11 来源: elecfans关键字: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 客户端服务给打开,不然点了没反应)

  

  • 执行命令:

    • 将文件与内存 address 开始的数据进行比较,格式有‘bin’、‘ihex’、‘elf’

    • 将内存从地址 address 开始的 size 字节数据读出,保存到文件

    • 将文件载入地址为 address 的内存,格式有‘bin’、‘ihex’、‘elf’

    • halt:挂起命令,也可以中断目标板的运行

    • step [address]:单步执行,如果指定了 address,则从 address 处开始执行

    • reset:复位目标板

    • mdw ['phys'] [count] 显示从(物理)地址 addr 开始的 count(缺省是 1)个字(4 字节),如 mdw 0x00000004 4

    • mdh ['phys'] [count] 显示从(物理)地址addr 开始的count(缺省是1)个半字(2字节)

    • mdb ['phys'] [count] 显示从(物理)地址 addr 开始的 count(缺省是 1)个字节

    • mww ['phys'] 向(物理)地址 addr 写入一个字,值为 value

    • mwh ['phys'] 向(物理)地址 addr 写入一个半字,值为 value

    • mwb 'phys']  向(物理)地址 addr 写入一个字节,值为 value

    • poll:查询目标板当前状态

    • resume [address]:恢复目标板的运行,如果指定了 address,则从 address 处开始执行

    • bp [hw] 在地址 addr 处设置断点,指令长度为 length, hw 表示硬件断点

    • rbp 删除地址 addr 处的断点内存访问指令(Memory access commands)

    • load_image

      [‘bin’|‘ihex’|‘elf’]

    • dump_image

    • verify_image

      [‘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  开发资源 引用地址:十、S3C2440 开发资源

上一篇:十一、S3C2440 裸机 — GPIO
下一篇:九、ARM 汇编与 C 的混合编程

推荐阅读最新更新时间:2024-11-09 19:03

s3c2440裸机-代码重定位、清bss的优化和位置无关码
1.代码重定位的改进 用ldr、str代替ldrb, strb加快代码重定位的速度。 前面重定位时,我们使用的是ldrb命令从的Nor Flash读取1字节数据,再用strb命令将1字节数据写到SDRAM里面。 我们2440开发板的Nor Flash是16位,SDRAM是32位。 假设现在需要复制16byte数据。 不同的读写指令 cpu读取nor的次数 cpu写入sdram的次数 ldrb、strb 16 16 ldr、str 8 4 可以看出我们更换读写指令后读写次数变少了,提升了cpu的访问效率。 修改后的start.s代码如下图所示,这里我只简单的列出了重定位的实现: ... cpy: ld
[单片机]
<font color='red'>s3c2440</font>裸机-代码重定位、清bss的优化和位置无关码
ARM9(S3C2440) ADC
模拟信号/数字信号 (1)、模拟信号是一种在时间上连续,数值上也连续的物理量,具有无穷多的数值,从自然界感知的大部分物理量都是模拟性质的,如速度,压力,温度,声音等。 (2)、数字信号在时间上和数值上均是离散的,而离散信号的值只有真与假,是或不是,因此可以使用二进制中的0与1来表示 。 ADC驱动流程 ADC主要驱动程序 main.c #define ADC_FREQ 2500000 void Main(void) { /*时钟初始化*/ Set_Clk(); /*adc初始化*/ adc_init(); while(1) {
[单片机]
嵌入式驱动编写之简单驱动Hello_word
开发环境 BootLoader:u-boot-1.1.6 kernel:linux-2.6.30.4 cpu:S3C2440 步骤 1、编写驱动代码 这应该是最简单的一个驱动了,只在内核打印一下信息,代码如下: #include linux/module.h #include linux/kernel.h MODULE_LICENSE( GPL ); static int __init le2440_hello_init(void) { printk( 1 n Hello,changle_2440!n ); printk( 1 nThis is first driver progr
[单片机]
嵌入式驱动编写之简单驱动Hello_word
06-S3C2440学习之移植2012u-boot到S3C2440(移植过程五--最终)
注意: 内核启动前,uboot可以做一些硬件初始化的工作,如初始化串口。 同时uboot支持不同的机器ID,uboot启动时要注意设备ID 是多少,不同的设备ID,内核会进行不同的初始化操作,所以要确定好uboot的设备ID 以及内核支持的设备ID。 一、环境参数设置 (1)Uboot可以配置一些环境变量, Uboot执行的时候: 1读参数 2判断是否有效 3无效则用默认写死的值 (2)搜索下using default environment 查看默认的配置default_environment: Nand存储规划 因此在Smdk2440.h (includeconfigs) 中加入一些环境变量的
[单片机]
06-S3C2440学习之移植2012u-boot到<font color='red'>S3C2440</font>(移植过程五--最终)
S3C2440驱动篇之触摸屏驱动分析
一.硬件简介 S3C2440触摸屏接口与ADC接口集成在一起,触摸屏X、Y坐标所产生的模拟信号通过通道7、5输入,2440提供触摸屏接口有4种处理模式:普通转换模式、分离的X/Y轴坐标转换模式、自动X/Y轴坐标转换模式、等待中断模式。具体参考2440硬件手册16章。 二.驱动实现 下面是触摸屏驱动源码,其中使用了linux输入子系统input。暂时还没研究这一块,想深入了解可参考相关资料。 #include linux/errno.h #include linux/kernel.h #include linux/module.h #include linux/slab.h #include linux
[单片机]
S3C2440开发板-LCD基础(源代码)
首先了解TFT LCD的时序,每个VSYNC信号表示一帧数据的开始,每个HSYNC表示一行数据的开始,无论这些数据是否有效,每个VCLK表示正在传输一个像素的数据,无论它是否有效。VSPW称为垂直同步信号的脉宽,VBPD称为垂直同步信号的后肩,VFPD称为垂直同步信号的前肩。HSPW称为水平同步信号的脉宽,HBPD称为水平同步信号的后肩,HFPD称为水平同步信号的前肩。查看时序图,VSYNC信号有效时,表示一帧数据的开始,VSPW表示VSYNC信号的脉冲宽度为(VSPW+1)个HSYNC信号周期,即(VSYNC+1)行,这(VSPW+1)行的数据无效。VSYNC信号脉冲之后,还要经过(VBPD+1)个HSYNC信号周期,有效的行数
[单片机]
<font color='red'>S3C2440</font>开发板-LCD基础(源代码)
uboot在s3c2440上的移植(1)
一、移植环境 主 机:VMWare--Fedora 9 开发板:Mini2440--64MB Nand,Kernel:2.6.30.4 编译器:arm-linux-gcc-4.3.2.tgz u-boot:u-boot-2009.08.tar.bz2 二、移植步骤 本次移植的功能特点包括: 支持Nand Flash读写 支持从Nor/Nand Flash启动 支持CS8900或者DM9000网卡 支持Yaffs文件系统 支持USB下载(还未实现) 1. 了解u-boot主要的目录结构和启动流程,如下图。 u-boot的stage1代码通常放在cpu/xxxx/start.S文件中,他用汇编语言写成
[单片机]
uboot在<font color='red'>s3c2440</font>上的移植(1)
基于S3C2440 处理器的嵌入式IPv6 防火墙设计
1 引言 在众多的网络安全设施中,防火墙是行之有效的重要网络安全设备,通过对网络通信进行筛选屏蔽以防未经授权的访问进出计算机网络。防火墙是位于可信网络和不可信网络之间的一道安全屏障,其最核心的任务就是管理和控制进出网络的通信量,它可以截获中途传输的数据包并进行处理,然后与事先定义好的安全策略规则相比较,并最终决定转发或丢弃该数据包。传统的防火墙通常位于一段网络的边界,它可以很好的过滤外界用户对内部网络的访问,但对内部网络的攻击却无能为力。针对此问题近年来关于新型防火墙的研究有很多,如分布式防火墙系统,嵌入式防火墙系统等。这些系统的目的是将防火墙的边界延伸,使其能够遍布网络的每一个终端设备,构建全方位的安全防护网络。 现有防
[单片机]
基于<font color='red'>S3C2440</font> 处理器的嵌入式IPv6 防火墙设计
小广播
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
随便看看

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved