.text

.globl _start

_start:

ldr r0, =0x70000000

orr r0, r0, #0x13

mcr p15, 0, r0, c15, c2, 4

ldr r0, =0x7e004000

mov r1, #0

str r1, [r0]

bl clock_init

ldr sp, =8*1024

bl xxxx

b .

start.S 文件,调用完时钟初始化函数后调用跑马灯程序。

.globl clock_init

clock_init:

ldr r0, =0x7E00F000

ldr r1, =0x0000FFFF

str r1, [r0]

str r1, [r0, #4]

str r1, [r0, #8]

#define OTHERS0x7e00f900

ldr r0, =OTHERS

ldr r1, [r0]

bic r1, r1, #0xc0

str r1, [r0]

loop1:

ldr r0, =OTHERS

ldr r1, [r0]

and r1, r1, #0xf00

cmp r1, #0

bne loop1

#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]

#define APLL_CON_VAL ((1<<31) | (266 << 16) | (3 << 8) | (1))

ldr r0, =0x7E00F00C

ldr r1, =APLL_CON_VAL

str r1, [r0]

/*

* APLL_CON, FOUTAPL = MDIV * Fin / (PDIV*2^SDIV) = 266*12/(3*2^1) = 532MHz

*/

#define MPLL_CON_VAL ((1<<31) | (266 << 16) | (3 << 8) | (1))

ldr r0, =0x7E00F010

ldr r1, =MPLL_CON_VAL

str r1, [r0]

/*

* MPLL_CON, FOUTMPL = MDIV * Fin / (PDIV*2^SDIV) = 266*12/(3*2^1) = 532MHz

*/

ldr r0, =0x7E00F01C

ldr r1, =0x03

str r1, [r0]

mov pc, lr

clock.S:时钟初始化。

all:start.o clock.o led.o

arm-linux-ld -Ttext 0 -o led.elf start.o clock.o led.o

arm-linux-objcopy -O binary led.elf led.bin

arm-linux-objdump -D led.elf > led.dis

cp led.bin /tftpboot/led.bin

%.o:%.S

arm-linux-gcc -c $< -o $@

%.o:%.c

arm-linux-gcc -c -o $@ $<

clean:

rm -rf *.o *.elf *.dis *.bin /tftpboot/*.bin

Makefile:在跑马灯的基础上添加clock.o

void delay ()

{

int i;

for (i = 0; i < 100000; i++)

;

}

int xxxx (void)

{

volatile unsigned long *gpmcon = (volatile unsigned long *)0x7f008820;volatile unsigned long *gpmdat = (volatile unsigned long *)0x7f008824;

int i;

for (i = 1; i <= 4; i++){

if (1 == i){

*gpmcon &= ~0xffff;

*gpmcon |= 0x1;

}else if (2 == i){

*gpmcon &= ~0xffff;

*gpmcon |= 0x10;

}else if (3 == i){

*gpmcon &= ~0xffff;

*gpmcon |= 0x100;

}else if (4 == i){

*gpmcon &= ~0xffff;

*gpmcon |= 0x1000;

i = 0;

}

*gpmdat = 0;

delay();

}

return 0;

}

led.c:同上一章一样。

结果:初始化时钟后,跑马灯速度明显快于不初始化时钟的跑马灯程序。

arm 跑马灯 linux,02 ARM11 时钟初始化后的跑马灯程序相关推荐

  1. 02 ARM11 时钟初始化后的跑马灯程序

    2019独角兽企业重金招聘Python工程师标准>>> .text .globl _start _start:ldr r0, =0x70000000orr r0, r0, #0x13 ...

  2. 【嵌入式开发】时钟初始化 ( 时钟相关概念 | 嵌入式时钟体系 | Lock Time | 分频参数设置 | CPU 异步模式设置 | APLL MPLL 时钟频率设置 )

    文章目录 一. 时钟相关概念解析 1. 相关概念术语 ( 1 ) 时钟脉冲信号 ( 概念 : 电压幅度 时间间隔 形成脉冲 | 作用 : 时序逻辑基础 间隔固定 根据脉冲数量可计算出时间 ) ( 2 ...

  3. [国嵌攻略][038][时钟初始化]

    时钟脉冲信号 按一定的电压幅度,一定的时间间隔连续发出的脉冲信号叫做时钟脉冲信号.用于给处理器和其他硬件提供时钟度量. 时钟脉冲频率 在单位时间内产生的时钟脉冲的个数叫做时间脉冲频率 时钟源分类 1. ...

  4. Linux内部的时钟处理机制全面剖析

    Linux内部的时钟处理机制全面剖析 在 Linux 操作系统中,很多活动都和时间有关,例如:进程调度和网络处理等等.所以说,了解 Linux 操作系统中的时钟处理机制有助于更好地了解 Linux 操 ...

  5. 交叉编译器的命名规则及详细解释(arm/gnu/none/linux/eabi/eabihf/gcc/g++)

    在linux系统下搞嵌入式开发,交叉编译器那肯定是必备工具.用的场合多了,就会见到各种各样的编译工具,比如: arm-linux-gcc arm-linux-gnueabi-gcc arm-none- ...

  6. linux监控任务跑满,Linux服务器带宽和CPU跑满或跑高排查

    Linux服务器带宽和CPU跑满或跑高排查 CPU 负载查看方法 使用 vmstat 查看系统纬度的 CPU 负载 使用 top 查看进程纬度的 CPU 负载 使用 vmstat 查看系统纬度的 CP ...

  7. linux 挂iscisc存储,基于arm的嵌入式linux操作系统的移植研究-通信与信息系统专业论文.docx...

    基于arm的嵌入式linux操作系统的移植研究-通信与信息系统专业论文 Classified Index: TP316.8 U.D.C: 621.38 Dissertation for the Mas ...

  8. 基于ARM的嵌入式Linux移植真实体验(3)――操作系统

    基于ARM的嵌入式Linux移植真实体验(3)――操作系统 宋宝华[email]21cnbao@21cn.com[/email] 出处:dev.yesky.com 在笔者撰写的<C语言嵌入式系统 ...

  9. s3c24xx的时钟初始化

    本文出处:http://blogold.chinaunix.net/u3/93291/showart_2071102.html 逢山开路 遇水架桥,今天想自己写个adc的驱动,发现不清楚系统各个模块的 ...

最新文章

  1. MySQL闪退问题的解决
  2. IJCAI 2021:周志华任大会首个华人程序主席,南大校友获AIJ杰出论文奖
  3. CodeForces - 571D Campus(数据结构综合)
  4. cfg桩设备型号_什么是CFG桩?带您看下CFG桩施工工艺及流程,检测项目
  5. opencv获取mat的指针_数字图像处理之opencv中Mat数据操作
  6. 1716.计算力扣银行的钱-LeetCode
  7. python中关于元组的基础运用
  8. android7.0 ActivityManagerService(AMS)启动流程
  9. 客户机无法上网,ping 127.0.0.1提示unable to contact IP driver ,error code2
  10. 微信小程序01-底部导航栏设置
  11. 基于java的企业人事管理系统的设计与实现(含源文件)
  12. 二阶无源低通滤波器幅频特性曲线_二阶无源滤波器
  13. project不显示里程碑标志_Project教程 在Project软件中如何让里程碑任务显示更直观...
  14. Deepin 深度操作系统安装教程
  15. 世界杯winner只属于你——MESSI
  16. Swift游戏实战-跑酷熊猫 07 平台的移动
  17. 2022张宇考研基础30讲 第十三讲 常微分方程
  18. execjs 模块 call() 方法报错 AttributeError: ‘NoneType‘ object has no attribute ‘replace‘
  19. 使用Java对PDF进行电子签章
  20. GAN生成对抗网络合集(三):InfoGAN和ACGAN-指定类别生成模拟样本的GAN(附代码)

热门文章

  1. 【Linux指令①】新手必须掌握的Linux指令
  2. Canvas之绘制时钟
  3. PHP宿舍管理系统项目实战
  4. BlackBerry 9850 应用:大众点评,美食家必备哦
  5. Android WiFi系统
  6. Web渗透测试基本流程
  7. 图形分析之Nsight的使用
  8. Nsight system(nsys)
  9. linux文件名后 rc 是什么意思
  10. 【九天教您南方cass 9.1】 04 编码法Ⅱ绘制地形图