历史上的今天
今天是:2024年12月15日(星期日)
2021年12月15日 | Exynos4412 Uboot 移植(六)—— 相关知识补充
2021-12-15 来源:eefocus
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;
史海拾趣
|
我做的一个带RX3400模块的产品一放上DVD(铁壳的),RX3400模块就会输出很多杂波,接收到另一个433MHZ模块发出来的数据完全变形,解不出来,而不放于DVD上数据完全正常,究竟是什么造成的?因为公司要求把433MHZ天线(我用大约17CM的单股线)内置于产品中,所 ...… 查看全部问答> |
|
因为半塞孔的区域是属于单边不通的盲孔状态,因此在孔口会产生严重的扰流状态,因此锡面就会产生粗糙的现象,基本上这是外观的问题,并无关于功能性,如果一定要好看,那么重融(Rel-flow)会是一个办法,但是并不建议,因为会增加电路板的负担容易产生信赖度 ...… 查看全部问答> |
|
一个月不到,王传福将福布斯中国首富和胡润百富榜首富双双揽入怀中。在听多了金融危机让富豪们财富缩水的故事后,人们总算从这个新鲜出炉的“双料”首富身上,看到冬天里的一抹亮色。 身为比亚迪董事长兼总裁,王传福用借来的250万元起家,用 ...… 查看全部问答> |
|
我用的是24位AD转换器:ADS1216 供电电压接+5V Vref-接0V Vref+接-2.5V 经过测量输入最高有效电压是+2.5V 数字量却只有8388608=FFFFFF/2 貌似24位有一半没有用上啊! 现在需要A ...… 查看全部问答> |
|
Windows Mobile 6.0 MFC对话框程序,如何能像C#程序那样在窗口的左\右下角各有一个功能按钮 C#工程,窗口是手机的样子 C++ MFC工程,窗口时普通Windows窗口的样子,所以无法编辑线面的两个按钮。请问有什么办法,能让我用C++的工程编辑那两个按钮呢,谢谢了。… 查看全部问答> |
|
现在需要用stm8l开发产品,想测试下其性能,特别是功耗。手头有stm8l152k6,和stm8l101k3,想问一下进入低功耗模式已达到产品宣传所说的微安级别的电流,直接用指令进就可以还是需要初始化相关设置。 哪位高手调试低功耗成功的可以介绍下经 ...… 查看全部问答> |




