嵌入式实习报告 - 图文

发布时间 : 星期日 文章嵌入式实习报告 - 图文更新完毕开始阅读

Samsung 公司推出的16/32位RISC处理器S3C2410A,为手持设备和一般类型应用提供了低价格、低功耗、高性能小型微控制器的解决方案。为了降低整个系统的成本,S3C2410A提供了以下丰富的内部设备:分开的16KB的指令Cache和16KB数据Cache,MMU虚拟存储器管理,LCD控制器(支持STN&TFT),支持NAND Flash系统引导,系统管理器(片选逻辑和SDRAM控制器),3通道UART,4通道DMA,4通道PWM定时器,I/O 端口,RTC,8通道10位ADC和触摸屏接口,IIC-BUS接口,IIC-BUS接口,USB主机,USB设备,SD主卡&MMC卡接口,2通道的SPI以及内部PLL时钟倍频器。

16

S3C2410A采用了ARM920T内核,0.18um工艺的CMOS标准宏单元和存储器单元。它的低功耗、精简和出色的全静态设计特别适用于对成本和功耗敏感的应用。同样它还采用了一种叫做Advanced Microcontroller Bus Architecture(AMBA)新型总线结构。

S3C2410A的显著特性是它的CPU核心,是一个由Advanced RISC Machines(ARM)有限公司设计的16/32位ARM920T RISC处理器。ARM920T实现了MMU,AMBA BUS和Harvard高速缓冲体系结构。这一结构具有独立的16KB指令Cache和16KB数据Cache,每个都是由8字长的行(line)构成。

3.2Flash、vivi、U_boot、linux烧录及其他实验

例 烧写wince

1.最开始先插上JTAG线,USB线,串口线。

2.CMD命令行里输入sjf2410.exe /f:vivi_my2410.bin 选0,选0,选0 烧写完成后选2退出(这一步中会安USB驱动,如USB驱动安装文档中所述安装方法)

3.关掉电源开关,拔掉JTAG线,并将BOOT SEL短接帽插上(从NAND FLASH启动)——关键的一步

4.打开“超级终端”,COM1口,设置为波特率115200,数据位8,无校验,1位停止位,数据流控制无——关键

5.按住PC的空格键,同时打开开发板电源,此时进入VIVI

17

6.说明:JTAG线可以用来监控程序(如2410mon.vivi等)烧写到flash中去。当板子上有了监控程序后,又可以通过串口或USB口来和PC机通信

下面在VIVI的命令行中输入 bon part 0 192k 1216k(对flash分区) load flash vivi u (通过USB重新烧写vivi) 打开DNW.exe 选择 ivi_my 2410.bin 并传输 load flash eboot u (通过USB烧写EBOOT.NB0) 打开DNW.exe 选择EBOOT.nb0 并传输 load flash wince u (通过USB烧写nk.bin) 打开DNW.exe 和 nk.bin 并传输

这样EBOOT.nb0和nk.bin 都烧到板子上了说明:nb0 文件可以直接在flash上运行,而bin文件只能在ram中运行。像上面EBOOt.nb0 就是在flash上运行,而后它把nk.bin复制到ram中运行。

实验结果如下图:

18

3.3 相关程序的初级学习

如:2410lib接口函数

void Delay(int time); //Watchdog Timer is used.延时 0

void *malloc(unsigned nbyte); void free(void *pt);

void Port_Init(void);

//初始化端口

//选择串口

//串口初始化

void Uart_Select(int ch); void Uart_TxEmpty(int ch); void Uart_Init(int mclk,int baud); char Uart_Getch(void);

//从串口读取一个字符(阻塞)

//从串口读取一个数字 //从串口发送一个字节 //从串口输出的printf

//分配内存 //释放内存

char Uart_GetKey(void); //从串口读取一个字符(非阻塞) int Uart_GetIntNum(void); void Uart_SendByte(int data); void Uart_Printf(char *fmt,...); void Uart_SendString(char *pt);

void Timer_Start(int divider); //Watchdog Timer is used. int Timer_Stop(void); //Watchdog Timer is used. void Led_Display(int data);

void ChangeMPllValue(int m,int p,int s); void ChangeClockDivider(int hdivn,int pdivn); void ChangeUPllValue(int m,int p,int s);

19

联系合同范文客服:xxxxx#qq.com(#替换为@)