Exynos4412 Uboot 移植(六)—— 相关知识补充

发布者:HeavenlyWonder最新更新时间:2022-01-14 来源: eefocus关键字:Exynos4412  Uboot  移植 手机看文章 扫描二维码
随时随地手机看文章

Uboot版本:u-boot-2013.01


一、gd结构体的定义与使用


gd_t 和 bd_t 是u-boot中两个重要的数据结构,在初始化操作很多都要靠这两个数据结构来保存或传递。


gd_t 定义在/u-boot-2013.01/arch/arm/include/asm/global_data.h


bd_t 定义在 ./include/asm-arm/u-boot.h


1、gd_t : global data数据结构定义


位于文件/u-boot-2013.01/arch/arm/include/asm/global_data.h 中。其成员主要是一些全局的系统初始化参数。


当使用gd_t 时需用宏定义进行声明DECLARE_GLOBAL_DATA_PTR



从这个宏的定义可以看出,gd是一个保存在ARM的r8寄存器中的gd_t结构体的指针。指定占用寄存器R8。

typedef struct global_data {

bd_t *bd;//struct board_info指针,保存开发板信息

unsigned long flags;//指示标志,如设备已经初始化标志等

unsigned int baudrate;//串口波特率

unsigned long have_console; //串口初始化标志

#ifdef CONFIG_PRE_CONSOLE_BUFFER

unsigned long precon_buf_idx; /* Pre-Console buffer index */

#endif

unsigned long env_addr; /* Address  of Environment struct */

unsigned long env_valid; /* Checksum of Environment valid? */

unsigned long fb_base; /* base address of frame buffer */

#ifdef CONFIG_FSL_ESDHC

unsigned long sdhc_clk;

#endif

#ifdef CONFIG_AT91FAMILY

/* "static data" needed by at91's clock.c */

unsigned long cpu_clk_rate_hz;

unsigned long main_clk_rate_hz;

unsigned long mck_rate_hz;

unsigned long plla_rate_hz;

unsigned long pllb_rate_hz;

unsigned long at91_pllb_usb_init;

#endif

#ifdef CONFIG_ARM

/* "static data" needed by most of timer.c on ARM platforms */

unsigned long timer_rate_hz;

unsigned long tbl;

unsigned long tbu;

unsigned long long timer_reset_value;

unsigned long lastinc;

#endif

#ifdef CONFIG_IXP425

unsigned long timestamp;

#endif

unsigned long relocaddr; /* Start address of U-Boot in RAM */

phys_size_t ram_size; /* RAM size */

unsigned long mon_len; /* monitor len */

unsigned long irq_sp; /* irq stack pointer */

unsigned long start_addr_sp; /* start_addr_stackpointer */

unsigned long reloc_off;

#if !(defined(CONFIG_SYS_ICACHE_OFF) && defined(CONFIG_SYS_DCACHE_OFF))

unsigned long tlb_addr;

unsigned long tlb_size;

#endif

const void *fdt_blob; /* Our device tree, NULL if none */

void **jt; /* jump table */

char env_buf[32]; /* buffer for getenv() before reloc. */

#if defined(CONFIG_POST) || defined(CONFIG_LOGBUFFER)

unsigned long post_log_word; /* Record POST activities */

unsigned long post_log_res; /* success of POST test */

unsigned long post_init_f_time; /* When post_init_f started */

#endif

} gd_t;



2.、bd_t :board info数据结构定义


位于文件u-boot-2013.01/arch/arm/include/asm/u-boot.h。保存板子参数。


typedef struct bd_info {

unsigned int bi_baudrate; /* 串口波特率 */

    ulong         bi_arch_number; /* 开发板机器ID */

    ulong         bi_boot_params; /* 启动参数 */

unsigned long bi_arm_freq; /* arm frequency */

unsigned long bi_dsp_freq; /* dsp core frequency */

unsigned long bi_ddr_freq; /* ddr frequency */

    struct /* RAM configuration */

    {

ulong start;

ulong size;

    } bi_dram[CONFIG_NR_DRAM_BANKS];

} bd_t;

关键字:Exynos4412  Uboot  移植 引用地址:Exynos4412 Uboot 移植(六)—— 相关知识补充

上一篇:Exynos4412 Uboot 移植(五)—— Uboot 移植过程
下一篇:Exynos4412 文件系统制作(三)—— 文件系统移植

推荐阅读最新更新时间:2024-11-10 11:10

高效可移植程序的一些习惯
高效可移植程序的一些习惯 这些都是本人的一些个人习惯,也许读者并不认同。 首先介绍两个大师提出的习惯,而我深感认同的。 对于一些状态的集合,尽可能使用enum而不是#define 来定义。 如: enum {OFF = 0, ON = 1}; 远比 #define OFF 0 #define ON 1 好。 两种写法编译的效果是一样的,但是写程序及看程序的人员来说感觉就不一样了。用enum定义时,可以觉得OFF与ON是一个集合,有相关性(且可减少程序中#define的定义)。但用#define定义时,完全可认为OFF与ON不相干。特别是在程序中#define定义过多时,查找并理解它的意思都是一个痛苦。(如:uc/
[单片机]
单片机---HLK-W801移植Nes模拟器(二)
前面已经完成了程序的移植,今天试一下按键操作,好歹也能跳一下,吃个蘑菇,也行啊 按键识别 w801上按键的识别,我这里用的是一个之前用过的全向按键键盘, 通过GPIO的方式采集按键,为了消除抖动,采用了中断定时器循环扫描的方式,连续扫描到8次高电平,认为是按下。 方法参考自博客《#51单片机#中断实现按键消抖》 首先定义一下宏 #define GPIO_UP WM_IO_PA_01 #define GPIO_DOWN WM_IO_PA_02 #define GPIO_LFT WM_IO_PA_08 #define GPIO_RHT WM_IO_PA_04 #define GPIO_START WM_IO_PA_05
[单片机]
单片机---HLK-W801<font color='red'>移植</font>Nes模拟器(二)
WINCE在ARM平台的移植及驱动技术详解
  WINCE操作系统简介   WinCE操作系统是通用型的嵌入式操作系统,它是一个开放的、可升级的32位嵌入式操作系统,是基于掌上型电脑类的电子设备操作系统,它是精简的Windows 95,WindowsCE的图形用户界面相当出色。它1996年开始发布Windows CE 1.0版本,2004年7月发布了Windows CE .NET 5.0版本,目前用得最多的是WindowsCE .NET 4.2版本,其发展速度也是很快的,功能_上自不必描述,它的主要应用领域有PDA市场、PPC、Smartphone、 工业控制、医疗等。   操作系统移植的原因   为了更快的适应市场需求,在实际开发过程中,我们更倾向于移植操作系统而不是
[单片机]
WINCE在ARM平台的<font color='red'>移植</font>及驱动技术详解
tiny6410 烧写uboot
#烧录 参考: 03- Tiny6410刷机指南.pdf 假设拿到的Tiny6410开发板没有提前下载任何程序,包括Bootloader. ##Bootloader - Superboot Superboot是FriendlyARM公司提供的Bootloader(非开源),提供USB下载功能。 只要烧写了Superboot, 就可以通过USB下载内核、文件系统到板子的Flash中。 因为Nand Flash现在还没有内容,现在只有通过SD卡启动。 完全空白的 SD 卡是不能直接启动 6410 开发板的,必须先在 PC 上使用特殊的烧写软 件把 BIOS(也可以称为 bootloader)写入 SD 卡才可以,并
[单片机]
u-boot-在2440上的移植详解(五)
嵌入式Linux之我行,主要讲述和总结了本人在学习嵌入式linux中的每个步骤。一为总结经验,二希望能给想入门嵌入式Linux的朋友提供方便。如有错误之处,谢请指正。 共享资源,欢迎转载: http://hbhuanggang.cublog.cn 一、移植环境 主 机: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 二、移植步骤 上接: u-boot-2009.08在2440上的移植详解(四) 9)实现u-boot对yaf
[单片机]
u-boot-在2440上的<font color='red'>移植</font>详解(五)
uboot-2011.12移植到S3C2440(一)—— 简单修改使u-boot能够编译
交叉编译环境为Fedora14和友善之臂做的交叉编译工具链 1、修改boards.cfg,添加红色的一行 smdk2400 arm arm920t - samsung s3c24x0 smdk2410 arm arm920t - samsung s3c24x0 smdk2440 arm arm920t - samsung s3c24x0 2、在$(SOURCEDIR)/u-boot-2011.06/board/samsung下,复
[单片机]
文件系统的移植(三):ramdisk文件系统的移植
内 核 版 本:linux-3.0 u-boot版本:u-boot-2010.09 开发板型号:FL2440 1、对根文件系统进行修改 无修改 2、添加内核对 nfs 的支持 2.1、 在内核中为 256M 的nandflash 进行分区,修改文件arch/arm/plat-s3c24xx/common-smdk.c 中第 109 行开始处的代码如下: static struct mtd_partition smdk_default_nand_part = { = { .name = mtdblock0 u-boot 1MB , .size = SZ_1M*1,
[单片机]
文件系统的<font color='red'>移植</font>(三):ramdisk文件系统的<font color='red'>移植</font>
STM32入门学习笔记之uCOS-II系统移植3
⑤这两个函数都用于任务切换,它们的本质都是触发PendSV中断,具体切换过程在PendSV的中断函数中进行,其中OSCtxSw是任务级切换,OSIntCtxSw是中断级切换,是从中断退出时切换到一个任务中,从中断切换到任务的过程中,CPU的寄存器入栈工作已经完成。 OSCtxSw PUSH {R4, R5} LDR R4, =NVIC_INT_CTRL ;触发PendSV异常 LDR R5, =NVIC_PENDSVSET STR R5, ;向NVIC_INT_CTRL写入NVIC_PENDSVSET触发PendSV中断 POP {R4, R5} BX LR OSIntCt
[单片机]
小广播
设计资源 培训 开发板 精华推荐

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

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

换一换 更多 相关热搜器件

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

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