U-boot2010代码框架

来源:互联网 发布:淘宝网夏季中年女装 编辑:程序博客网 时间:2024/05/15 18:47

api
|–api.c:
|–api_net.c:
|–api_XXX.c:
arm:体系结构相关代码,和主芯片相关
|–cpu
|–arm1176
|–s3c64xx/
|–cpu_init.S:内存控制器的初始化,并且等到初始化完成,然后返回。.globl mem_ctrl_asm_init
|–reset.S:复位CPU并进入死循环。.globl reset_cpu
|–speed.c:获得一些时钟信息,ARMCLK,FCLK,HCLK,PCLK,UCLK;print_cpuinfo。
|–timer.c:获取定时器信息,s3c64xx_timers,初始化timer,获取timestamp信息,等等。
|–start.S:设置中断向量表,初始化cpsr,保存TEXT_BASE,start,bss_start,bss_end位置信息,从ram中reboot需要初始化一些寄存器
如:flush cache,I/D TLB,disable MMU;disable TCMs(类似cache);peri port初始化;拷贝u-boot的除了bss的各段,设置
栈,清bss段,跳转到start_armboot函数。注意c函数的符号表。
|–cpu.c:关中断,关闭icache,dcache,flush_cache()。在启动linux之前进行的操作。
|–u-boot.lds:链接脚本,设置了这个架构的链接方式,运行config.mk时候会拷贝到顶层目录。
|–include:架构所需的头文件。
|–lib:架构的库文件。
|–board.c:start_armboot,初始化内存布局,从高到底环境变量,uboot代码,malloc段,gd,bd,12字节安全空间,sp。
malloc段初始化,lcd mem分配,nand_init(),onenand_init(),mmc_initialze(gd->bd),env_relocate (),
drv_vfd_init(),serial_initialize(),stdio_init (),jumptable_init (),api_init (),console_init_r (),
arch_misc_init (),misc_init_r (),enable_interrupts (),board_late_init (),bb_miiphy_init(),
eth_initialize(gd->bd),reset_phy()和根据环境变量初始化数据。进入主循环,读取命令然后解析和执行命令。
|–bootm.c:设置启动参数,启动linux kernel。setup_start_tag (bd_t *bd),setup_memory_tags (bd_t *bd),
setup_commandline_tag (bd_t *bd, char *commandline),setup_initrd_tag (bd_t *bd, ulong initrd_start,
ulong initrd_end),setup_end_tag (bd_t *bd),do_bootm_linux(…)。
void (*theKernel)(int zero, int arch, uint params);内核函数原型。
|–cache_cp.c:cache相关的enable,status。
|–cache.c:flush_cache()。
|–div0.c:hang()。
|–interrupts.c:中断初始化,设置FIQ,IRQ栈,设置中断处理函数。打印arm寄存器。
|–reset.c:重置cpu并且进入死循环。
|–*.S:其他汇编文档,不知道干什么用的。
board:板级代码,和板子相关
|–samsung
|–smdk6400
|–lowlevel_init.S:led on,disable watchdog,清中断标志,关中断,设置中断模式,初始化系统时钟,初始化UART,
简单初始化NAND,内存控制器初始化,唤醒支持。mov r12,lr mov lr,r12 mov pc,lr回到start.S。
|–smdk6400.c:主要是初始化CS8900网卡和初始化gd->bd。
|–u-boot-nand.lds:链接脚本,根据配置选择哪个。
common:通用函数,主要是命令处理函数和环境变量函数。
|–bedbug.c:debug相关。
|–cmd_xxx.c:命令处理函数。struct cmd_tbl_t在u_boot_cmd段存放的命令名称,处理函数,等相关信息的结构体。
|–command.c:_do_help()显示各个命令的帮助信息,find_cmd_tbl()找到cmd的存放的位置,var_complete()设置命令完成处理函数,
make_argv(),print_argv(),find_common_prefix(),cmd_auto_complete()自动补全命令,cmd_get_data_size()。
|–console.c:结构体stdio_dev是console的核心数据,以链表形式组织,包含设备名称,测试输入函数,输入,输出,停止,启动设备函数,
还包括扩展函数。分为stdin,stdout,stderr。gd->jt[]数组中存储这些函数。console_setfile()初始化。
console_getc(),console_tstc():test if it is a char,console_putc(),console_puts(),serial_printf(),
fgetc(),ftstc(),fputc(),fputs();getc(),tstc(),putc(),puts();printf(),vprintf(),vsprintf();dbg();
search_device(),console_assign(),console_init_f(),stdio_print_current_devices(),console_init_r()。
|–ddr_spd.c:主要是进行spd的check。spd_check,ddr1_spd_check,ddr2_spd_check,crc16,ddr3_spd_check。
|–dlmalloc.c:memset(),memcpy();MALLOC_ZERO(),MALLOC_COPY();mallinfo:实现malloc函数,和free函数。
|–env_XXX.c:将环境变量保持在相关的存储介质中,包括文件系统。
|–export.c:get_version(),给gd->jt分配内存并且初始化。
|–fdt_support.c:
|–flash.c:flash_info_t:保存flash的信息,flash_protect(),addr2info(),flash_write(),flash_perror()打印错误信息;
|–hush.c:内部实现一些命令,如cd,env,exec等。用hush方式解析用户命令。定义了CONFIG_SYS_HUSH_PARSER采用busybox方式解析命令。
|–hwconfig.c:板级硬件配置。
|–image.c:内核镜像相关。
|–iomux.c:IO复用。
|–kallsyms.c:bulltin的辅助函数,和hush相关。
|–kgdb.c:调试相关?
|–kgdb_stubs.c:调试相关?
|–ldc.c:LCD相关代码,包括LCD的初始化,绘制logo,绘制字符,字符串,改变颜色等。底层处理程序lcd_drawchars(),lcd_puts_xy(),
lcd_putc_xy(),通用程序lcd_init(),lcd_clear(),lcd_logo(),lcd_getbgcolor(),lcd_setfgcolor(),lcd_setbgcolor(),lcd_getcolreg(),
lcd_getfgcolor(),console_scrollup(),console_back(),console_newline()画面滚动,回滚,换行,lcd_putc(),lcd_puts(),lcd_printf(),
|–lynxkdi.c:Booting LynxOS KDI …
|–main.c:U-boot主循环main_loop()函数,主要是获取命令,执行命令。
|–memsize.c:获取有效内存大小的函数get_ram_size(),从地址base到base+maxsize区间可用ram的大小。
|–miiphyutil.c:ethernet MII management,MII设备初始化,管理,读写。
|–modem.c:读取参数,控制hwflow开关。
|–serial.c:串口和IO输入输出流相关,serial_initialize(),serial_stdio_init(),serial_assign(),serial_reinit_all(),serial_init(),
serial_setbrg(),serial_getc(),serial_tstc(),serial_putc(),serial_puts()。
|–stdio.c:输入输出流相关初始化和处理,lcd,键盘,串口,i2c,其他初始化和寄存器处理。
|–system_map.c:暂无。
|–s_record.c:根据配置将字符串变成二进制编码。
|–update.c:更新uboot
|–usb.c:USB驱动程序。
|–usb_kbd.c:USB键盘。
|–usb_storage.c:USB存储。
|–xyzModem.c:x,y,z,modem通信。
disk:分区相关
|–part.c:
|–part_amiga.c:
|–part_dos.c:
|–part_efi.c:
|–part_iso.c:
|–part_mac.c:
doc:相关文档描述
drivers:各种设备的通用驱动框架
|–bios_emulator:
|–block:
|–dma:
|–fpga:
|–gpio:
|–hwmon:
|–i2c:
|–input:
|–misc:
|–mmc:
|–mtd:
|–net:
|–pci:
|–pcmcia:
|–power:
|–qe:
|–rtc:
|–serial:
|–teserial:
|–usb:
|–video:
|–watchdog;
examples:示例
fs:文件系统框架
|–cramfs
|–ext2
|–fat
|–fdos
|–jffs2
|–reiserfs
|–ubifs
|–yaffs2
include:所需的头文件基本都在这里
|–
|–
|–
|–
|–
lib:库函数
nand_spl:
|–board:
|–samsung
|–makefile
|–u-boot.lds
|–nand_boot.c:
|–nand_boot_fsl_elbc.c:
|–nand_boot_fsl_nfc.c:
net:
|–bootp.c:
|–dns.c:
|–eth.c:
|–net.c:
|–nfs.c:
|–rarp.c:
|–sntp.c:
|–tftp.c:
onenand_spl:同nand_spl目录
post:
tools:工具

0 0