当前位置: 首页 > news >正文

投资网站建设公司医院网站建设报告

投资网站建设公司,医院网站建设报告,asp.net 网站 项目 区别,酒店建筑设计网站一. uboot启动流程 _main 函数中会调用 board_init_f 函数,本文继续简单分析一下 board_init_f 函数。 具体分析 board_init_f函数的第二部分:内存分配代码。 本文继上一篇文章的学习,地址如下: uboot启动流程-涉及board_init…

一.  uboot启动流程

_main 函数中会调用 board_init_f 函数,本文继续简单分析一下 board_init_f 函数。

具体分析 board_init_f函数的第二部分:内存分配代码。

本文继上一篇文章的学习,地址如下:

uboot启动流程-涉及board_init_f 函数-CSDN博客

二.  uboot内存分配

下面具体分析 board_init_f 函数的后半部分:内存分配代码。

board_init_f 函数里面有大量的条件编译代码,这里为了缩小篇幅,将条件编译部分删除掉了,去掉条件编译以后的board_init_f 函数 后半部分代码如下:

1 static init_fnc_t init_sequence_f[] = {
2 setup_mon_len,
......
32 /*
33 * Now that we have DRAM mapped and working, we can
34 * relocate the code and continue running from DRAM.
35 *
36 * Reserve memory at end of RAM for (top down in that order):
37 * - area that won't get touched by U-Boot and Linux (optional)
38 * - kernel log buffer
39 * - protected RAM
40 * - LCD framebuffer
41 * - monitor code
42 * - board info struct
43 */
44 setup_dest_addr, 
45 reserve_round_4k, 
46 reserve_mmu, 
47 reserve_trace, 
48 reserve_uboot, 
49 reserve_malloc, 
50 reserve_board, 
51 setup_machine, 
52 reserve_global_data, 
53 reserve_fdt, 
54 reserve_arch, 
55 reserve_stacks, 
56 setup_dram_config, 
57 show_dram_config, 
58 display_new_sp, 
59 INIT_FUNC_WATCHDOG_RESET
60 reloc_fdt, 
61 setup_reloc, 
62 NULL,
63 };

44 行, setup_dest_addr 函数,设置目的地址,设 gd->ram_size gd->ram_top gd->relocaddr
这三个的值。 我可以修改 uboot 代码,直接将这些值通过串口打印出来,比如这里我们修改文件
common/board_f.c ,因为 setup_dest_addr 函数定义在文件 common/board_f.c 中。

setup_dest_addr 函数加入打印如下:

    printf("gd->ram_size: %#x\n", gd->ram_size);printf("gd->ram_top: %#x\n", gd->ram_top);printf("gd->relocaddr: %#x\n", gd->relocaddr);

重新编译 uboot源码后,生成 u-boot.bin。将 u-boot.bin拷贝到 ubuntu的 tftp服务设置目录下。

通过 tftp服务将 u-boot.bin下载到开发板。开发板uboot命令模式下输入如下:

=> tftp 0x87800000 u-boot.bin
Using FEC1 device
TFTP from server 192.168.1.66; our IP address is 192.168.1.50
Filename 'u-boot.bin'.
Load address: 0x87800000
Loading: #################################2.7 MiB/s
done
Bytes transferred = 476700 (7461c hex)

运行下载到开发板的 DRAM的uboot。操作如下:

=> go 0x87800000
## Starting application at 0x87800000 ...U-Boot 2016.03 (Oct 02 2023 - 21:20:41 +0800)CPU:   Freescale i.MX6ULL rev1.1 69 MHz (running at 396 MHz)
CPU:   Industrial temperature grade (-40C to 105C) at 44C
Reset cause: unknown reset
Board: MX6ULL ALIENTEK NAND
I2C:   ready
DRAM:  gd->ram_size: 0x10000000
gd->ram_top: 0x90000000
gd->relocaddr: 0x90000000
256 MiB
......

可以看出, 这里三个参数:

gd->ram_size = 0X10000000 //ram 大小为 0X10000000= 256 MB
gd->ram_top = 0X90000000 //ram 最高地址为 0X80000000+0X10000000=0X90000000
gd->relocaddr = 0X90000000 //重定位后最高地址为 0X90000000

45 行 , reserve_round_4k 函数用于对 gd->relocaddr 4KB 对 齐 , 因 为gd->relocaddr=0XA0000000 ,已经是 4K 对齐了,所以调整后不变。

46 行, reserve_mmu 函数,留出 MMU TLB 表的位置,分配 MMU TLB 表内存以后,会对 gd->relocaddr 64K 字节对齐。完成以后, gd->arch.tlb_size gd->arch.tlb_addr gd->relocaddr如下所示:
DRAM:  gd->arch.tlb_size: 0x4000  //MMU 的 TLB 表大小
gd->arch.tlb_addr: 0x8fff0000     //MMU 的 TLB 表起始地址,64KB 对齐以后
gd->relocaddr: 0x8fff0000         //relocaddr 地址

47 行,reserve_trace 函数,留出跟踪调试的内存,I.MX6ULL 没有用到!

48 行, reserve_uboot 函数, 留出重定位后的 uboot 所占用的内存区域, uboot 所占用大小由gd->mon_len 所指定,留出 uboot 的空间以后还要对 gd->relocaddr 4K 字节对齐,并且重新设 gd->start_addr_sp ,打印如下:
 
DRAM:  gd->mon_len: 0xb7394
gd->start_addr_sp: 0x8ff38000
gd->relocaddr: 0x8ff38000

49 行, reserve_malloc 函数,留出 malloc 区域,调整 gd->start_addr_sp 位置, malloc 区域由宏
TOTAL_MALLOC_LEN 定义,打印如下:

DRAM:  TOTAL_MALLOC_LEN:    0x1020000
gd->start_addr_sp: 0x8ef18000      //0X8FF38000-16MB-4MB=0X8EF18000

http://www.yayakq.cn/news/398356/

相关文章:

  • 无锡网站 app微信小程序开发需要多少钱?
  • 网站ip地址 转向域名中国手工加工网免费供料
  • 庐阳网站快速排名wordpress 存储插件
  • 网站搜索不到了晋江企业网站开发
  • 网站如何被谷歌收录一个空间做2个网站
  • 建手机号码的网站vi设计找哪家公司
  • 做餐饮网站建设制作灯笼的材料和做法
  • 博客网站源码平台型网站建设公司
  • 淄博网站建设乐达推广网站网站怎么建设
  • 做个简单的企业小网站凡科精选app
  • 网站空间后台怎么进入广州有几个区几个县级市
  • 在服务器上布网站怎么做的深圳高端网站制作公司
  • 工具类网站怎么优化seo网站上海备案查询
  • 心悦俱乐部官方网站怎么做任务官方网站营销
  • 没有域名怎么搭建网站访问网站的过程
  • 网站地图html模板软件开发培训it培训哪个好
  • 国外做装饰画的网站上不了国外网站 怎么做贸易
  • 怎么在自己的网站上做漂浮链接公司邮箱免费注册
  • 网站管理系统怎么用html静态网页制作案例
  • 做电子画册的网站word页面设计模板
  • 深圳宝安做网站公司华为公司邮箱
  • 网站 备案号查询建设网站图片大全
  • 郑州网站建设企业名录网站使用微信支付
  • 写网站开发代码网站开发设计注册
  • 网站开发环境实验报告win10怎么做网站
  • 段友做的看电影网站wordpress悬浮按钮插件
  • 衡阳网站排名优化网站开发教学视频百度云
  • 学做网站视频教程机械 东莞网站建设
  • 跨境电商网站建设怎么在网上发布广告
  • 网站营销淘宝联盟怎么推广赚钱