CPU 的初始化(ARM & u-boot)

1. 设定 CPU 内部寄存器, 包括状态寄存器和SP等.

start_code:
	/*
	 * set the cpu to SVC32 mode
	 */
	mrs	r0, cpsr
	bic	r0, r0, #0x1f
	orr	r0, r0, #0xd3
	msr	cpsr, r0

2. 关闭看门狗.

	ldr	r0, =pWTCON
	mov	r1, #0x0
	str	r1, [r0]

3. 设定中断向量表.

	/*
	 * mask all IRQs by setting all bits in the INTMR - default
	 */
	mov	r1, #0xffffffff
	ldr	r0, =INTMSK
	str	r1, [r0]
# if defined(CONFIG_S3C2410)
	ldr	r1, =0x3ff
	ldr	r0, =INTSUBMSK
	str	r1, [r0]
# endif

4. 设定 CPU 内部各单元(包括 CPU 核与内置的其他设备如定时器, 电源管理, SDRAM控制器, LCD控制器, 时钟等)的 Clock 时钟.

	/* FCLK:HCLK:PCLK = 1:2:4 */
	/* default FCLK is 120 MHz ! */
	ldr	r0, =CLKDIVN
	mov	r1, #3
	str	r1, [r0]

Bus设置------设置各个外部内存的特性, 包括要插入几个 waiting cycle, 操作该内存的基本单位宽度(8/16/32bit)等.

// 见 MMU 设置.

5. 设置 CPU 各个 PIN 引脚的用途使其符合系统或应用程序的要求. 一般都是设置选择输入输出或者其他第二功能的寄存器.

6. 设置 CPU 的工作模式, 刚开始一般都为 Full run mode.

// 如上面

7. 设置 MMU等存储相关的设备.

/*
 *************************************************************************
 *
 * CPU_init_critical registers
 *
 * setup important registers
 * setup memory timing
 *
 *************************************************************************
 */


#ifndef CONFIG_SKIP_LOWLEVEL_INIT
cpu_init_crit:
	/*
	 * flush v4 I/D caches
	 */
	mov	r0, #0
	mcr	p15, 0, r0, c7, c7, 0	/* flush v3/v4 cache */
	mcr	p15, 0, r0, c8, c7, 0	/* flush v4 TLB */

	/*
	 * disable MMU stuff and caches
	 */
	mrc	p15, 0, r0, c1, c0, 0
	bic	r0, r0, #0x00002300	@ clear bits 13, 9:8 (--V- --RS)
	bic	r0, r0, #0x00000087	@ clear bits 7, 2:0 (B--- -CAM)
	orr	r0, r0, #0x00000002	@ set bit 2 (A) Align
	orr	r0, r0, #0x00001000	@ set bit 12 (I) I-Cache
	mcr	p15, 0, r0, c1, c0, 0

	/*
	 * before relocating, we have to setup RAM timing
	 * because memory timing is board-dependend, you will
	 * find a lowlevel_init.S in your board directory.
	 */
	mov	ip, lr

	bl	lowlevel_init

	mov	lr, ip
	mov	pc, lr
#endif /* CONFIG_SKIP_LOWLEVEL_INIT */

8. 其他内部设备的初始化.

=============================================================================================================================




  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: hi3516dv300是一款高性能的视频处理芯片,主要用于监控、安防、智能家居等领域。它采用了ARM Cortex-A7架构的CPU和高性能的图像处理模块,能够实现高清视频的编解码、图像处理和智能分析等功能。 u-boot是一个开源的引导加载程序,用于启动嵌入式系统。它负责初始化硬件、加载操作系统内核,并提供命令行界面来操作和控制系统。对于hi3516dv300芯片来说,u-boot也是必不可少的,它能够加载和启动操作系统,开发者可以通过u-boot来进行系统调试和修改。 bin文件是一种二进制文件格式,用于存储机器语言的指令和数据。在hi3516dv300中,u-boot bin文件是经过编译后生成的可执行文件,它包含了u-boot的所有代码和数据,可以直接烧写到芯片的闪存中,用于启动系统。 csdn是一个网络社区平台,提供了众多技术和学习资源。在csdn上可以找到和hi3516dv300芯片相关的资料和开发文档,可以与其他开发者进行交流和学习。对于开发者来说,csdn是一个宝贵的资源库,能够帮助他们更好地理解和应用hi3516dv300芯片。 ### 回答2: Hi3516DV300是一款由华为海思公司推出的嵌入式处理器,具有强大的图像处理和视频编解码功能。该处理器内置的U-boot是一种开源的引导加载程序,可用于启动操作系统并加载应用程序。 CSND是中国领先的IT技术社区,提供了广泛的技术交流和资源共享平台。在CSND上,你可以找到Hi3516DV300系列芯片的相关资料和技术文章,了解其技术特性、应用场景和开发方式等。 如果你想使用Hi3516DV300芯片,首先你需要获取它的U-boot二进制文件。这个二进制文件是预先编译好的,可以直接烧录到芯片中。U-boot在启动时会进行硬件初始化、加载操作系统内核,并提供命令行界面供用户进行配置和操作。 在CSND上,你可以找到一些Hi3516DV300 U-boot bin的相关资源下载链接。你可以根据自己的需求选择适合的版本进行下载,并按照相关文档进行烧录和配置。 总之,Hi3516DV300芯片和它的U-boot引导程序在CSND上都有相关资源可供参考和下载。希望这些信息能对你有所帮助。 ### 回答3: hi3516dv300是海思半导体推出的一款高性能视频处理芯片,可以广泛应用于监控摄像头、智能家居、工业视觉等领域。它具有低功耗、高性能、丰富的接口等特点,深受市场欢迎。 而U-boot是一种开源的引导加载程序,用于启动操作系统。它具有灵活的配置选项,可以适配多种不同的硬件平台和操作系统。 而.bin文件是二进制文件的一种格式,可以将程序代码编译成计算机可读的二进制形式。 CSDN是中国最大的IT技术社区,提供丰富的技术文章和论坛交流平台,涵盖了计算机科学、软件开发、网络安全等众多领域。 因此,hi3516dv300 u-boot bin csdn可以理解为指的是使用hi3516dv300芯片,编译好的U-boot二进制文件,并在CSDN上进行相关技术discussion和分享。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值