开发环境
系统:ubuntu 10.04.4
单板:s5pc100
编译器:arm-linux-gcc-4.3.2
搭建开发环境详见ubuntu 10.04.4开发环境配置。
目标:实现s5pc100 uart0 显示任意输入字符
系统:ubuntu 10.04.4
单板:s5pc100
编译器:arm-linux-gcc-4.3.2
搭建开发环境详见ubuntu 10.04.4开发环境配置。
目标:实现s5pc100 uart0 显示任意输入字符
一、编写源代码
根据s5pc100手册编写代码,包括源文件start.S clock.s main.c uart.c uart.h Makefile
文件start.s:
.global _start
_start:
ldr sp, =0xD0030000
bl clock_init
b main
文件clock.s:
.globl clock_init
clock_init:
/* 1.设置LOCK_TIME */
ldr r0, =0xe0100000 //CLOCK_POWER_BASE
mov r1, #0xe00
orr r1, r1, #0x10
str r1, [r0, #0x0] /* APLL_LOCK */
str r1, [r0, #0x4] /* MPLL_LOCK */
str r1, [r0, #0x8] /* EPLL_LOCK */
str r1, [r0, #0x0c] //HPLL_LOCK
//#define OTHERS 0x7e00f900
// @ set async mode /* 当CPU时钟 != HCLK时,要设为异步模式 */
// ldr r0, =OTHERS
// ldr r1, [r0]
// bic r1, r1, #0xc0 /* 1100,0000 */
// str r1, [r0]
//loop1: /* 等待,直到CPU进入异步模式 */
// ldr r0, =OTHERS
// ldr r1, [r0]
// and r1, r1, #0xf00
// cmp r1, #0
// bne loop1
/* SYNC667 */
/* MISC_CON[19] = 0 */
//#define ARM_RATIO 0 /* ARMCLK = DOUTAPLL / (ARM_RATIO + 1) */
//#define HCLKX2_RATIO 1 /* HCLKX2 = HCLKX2IN / (HCLKX2_RATIO + 1) */
//#define HCLK_RATIO 1 /* HCLK = HCLKX2 / (HCLK_RATIO + 1) */
//#define PCLK_RATIO 3 /* PCLK = HCLKX2 / (PCLK_RATIO + 1) */
//#define MPLL_RATIO 0 /* DOUTMPLL = MOUTMPLL / (MPLL_RATIO + 1) */
// ldr r0, =0x7E00F020 /* CLK_DIV0 */
// ldr r1, =(ARM_RATIO) | (MPLL_RATIO << 4) | (HCLK_RATIO << 8) | (HCLKX2_RATIO << 9) | (PCLK_//RATIO << 12)
// str r1, [r0]
/* CLK_DIV0 */
#define APLL_RATIO 0
#define ARM_RATIO 4
#define D0_BUS_RATIO 8
#define PCLKD0_RATIO 12
#define SECSS_RATIO 16
ldr r1, [r0, #0x300] //CLK_DIV0 Clock divider
ldr r2, =0x3fff
bic r1, r1, r2
ldr r2, =(1<<APLL_RATIO) | (0<<ARM_RATIO) | (4<<D0_BUS_RATIO) | (1<<PCLKD0_RATIO) | (1<