查看6410数据手册可以看到,内存开始地址应该是0x50000000,而实际在real6410开发板使用过程中U-boot加载Linux内核都是加载到0xC0008000处开始运行,我猜测(还没有看代码来验证猜测)这个是因为Linux启动内核的地址为0xC0008000,而U-boot为了和Linux保持一致,故对内存也做了映射,方便用户使用。下面先以内核2.6.28为例来先来看一下Linux中这个内存地址的由来。

首先看启动代码代码arch/arm/kernel/head.S

29 #define KERNEL_RAM_VADDR        (PAGE_OFFSET + TEXT_OFFSET)//定义虚拟内存首地址

30 #define KERNEL_RAM_PADDR        (PHYS_OFFSET + TEXT_OFFSET)//定义实际物理内存地址

PAGE_OFFSET的出处

代码arch/arm/include/asm/memory.c

27 #ifdef CONFIG_MMU

28

29 /*

30 * PAGE_OFFSET - the virtual address of the start of the kernel image

31 * TASK_SIZE - the maximum size of a user space task.

32 * TASK_UNMAPPED_BASE - the lower boundary of the mmap VM area

33 */

34 #define PAGE_OFFSET             UL(CONFIG_PAGE_OFFSET)

代码include/linux/autoconf.h

#define CONFIG_PAGE_OFFSET 0xc0000000

PHYS_OFFSET 的出处

代码 arch/arm/mach-s3c6400/include/mach/memory.h //与6400平台相关的内存设置

#define PHYS_OFFSET UL(0x50000000)

TEXT_OFFSET的定义在arch/arm/Makefile中,这个值是内核所在位置的实际偏移量,具体对这个值的说明看文件arch/arm/kernel/head.S。

38 /*

39  * swapper_pg_dir is the virtual address of the initial page table.

40  * We place the page tables 16K below KERNEL_RAM_ADDR.  Therefore, we must

41  * make sure that KERNEL_RAM_ADDR is correctly set.  Currently, we expect

42  * the least significant 16 bits to be 0x8000, but we could probably

43  * relax this restriction to KERNEL_RAM_ADDR >= PAGE_OFFSET + 0x4000.

44  */

也就是说,从地址KERNEL_RAM_VADDR 开始的至少0x4000用来存放内核页表,而存放内核页表的空间值建议是0x8000。

linux开发板换内存,关于6410开发板Linux内存地址0Xc0008000的由来相关推荐

  1. linux触摸板开关快捷键,linux 增多快捷键打开或关闭触摸板

    当前位置:我的异常网» Linux/Unix » linux 增多快捷键打开或关闭触摸板 linux 增多快捷键打开或关闭触摸板 www.myexceptions.net  网友分享于:2013-06 ...

  2. 编译linux系统到开发板,Linux系统有关交叉编译和移植到6410开发板上的简单过程...

    在进行移植之前,要检查一下目标机(这里指6410开发板)与宿主机之间的接线问题,即串口线.网线是否正确连接,目标机的电源是否插好!在接线问题解决后,才能保证交叉编译正常进行! 个人理解,移植的主要思想 ...

  3. 【6410开发板交流】关于UT-S3C6410开发板telnet Linux主机的详细设置

    友坚UT-S3C6410开发板telnet  Linux主机的详细设置 各位,以下是友坚UT-S3C6410开发板telnet  Linux主机的详细设置,应通过初次验证,请大家指教.www.urbe ...

  4. s3c6410 开发板Linux系统支持 K9GAG08U0E的方法

    由于NandFlash硬件升级比较快,公司去年一直在使用三星的K9GAG08U0D,现在MLC NandFlash 升级到了第二代,K9GAG08U0D 很快就会处在停产的状态,未雨绸缪,公司选型了K ...

  5. firefly-rk3288j开发板--linux I2C实验之eeprom驱动

    firefly-rk3288j开发板–linux I2C实验之eeprom驱动 1 准备工作 开发板:aio-rk3288j SDK版本:rk3288_linux_release_20210304 下 ...

  6. firefly-rk3288开发板Linux驱动——AT24C02 E2PROM驱动

    一.Linux I2C设备体系 Linux源码中I2C驱动目录介绍: 目录/文件 介绍 i2c-core.c I2C核心功能以及proc/bus/i2c*接口 i2c-dev.c I2C适配器的设备文 ...

  7. 迅为IMX6ULL开发板Linux学习教程

    1800+页使用手册(持续更新)+入门视频教程+实战视频教程 关注VX公众号:迅为电子 ,  回复 :终结者,免费获取产品资料  让教程更细致,终结入门难! 所有教程由迅为原创,是迅为工作多年的工程师 ...

  8. 玩转开发板--Linux系统移植至开发板fl2440实践过程

    一.开发板介绍     CPU:S3C2440(SAMSUNG).ARM920T.400MHz     Pone/mic:耳机和话筒 JTAG:可以通过外部插入直接控制CPU,因此在初始化内存时,起到 ...

  9. 讯为4412开发板Linux驱动学习笔记

    驱动理论专题一 Linux驱动程序的基本认识 有了内存管理单元,就有虚拟地址,物理地址. 驱动理论专题二 学会查看原理图 以LED2为示例 通过原理图查看到KP_COL0,赋予高电平则能点亮LED2, ...

最新文章

  1. 客户端 获取服务器性能,客户端数量 服务器性能
  2. asp.net core 自定义401和异常显示内容(JWT认证、Cookie Base认证失败显示内容)
  3. [react] 说说Context有哪些属性?
  4. Spring Data —— 完全统一的API?
  5. 博客园12月份第1周51Aspx源码发布详情
  6. 通达信指标公式颜色代码、图标、函数 大全
  7. 西游记不单单讲的是故事(1) ------ 摘自 吴闲云的《煮酒探西游》
  8. 《动手学深度学习》学习笔记(五)-几种常见的卷积神经网络整理。
  9. APS与ERP及MES的关系和接口
  10. Bumped! 2017 ICPC North American Qualifier Contest (分层建图+dijstra)
  11. 图解事件坐标screenX、clientX、pageX, offsetX的区别
  12. 概率论与数理统计之随机试验与随机时间样本空间与事件的集合表示
  13. 名帖43 梁启超 隶书《临张迁碑》
  14. Mac终端加入IDEA命令
  15. 【DX-BT24蓝牙模块-AT命令与手机透传教程】
  16. yum命令详解和报错 Cannot find a valid baseurl for repo: base
  17. html更改纵坐标数值,excel折线图纵坐标轴数值与实际值不一致该怎么办?折线图怎么修改纵坐标...
  18. GoIP/WoIP/CoIP对接VOS
  19. 移除浏览器的搜狗导航
  20. 介绍一下电脑管家小团队VIP版本,限时免费2个月开放体验啦!

热门文章

  1. file文件C语言,C语言 File文件处理 创建和写文件
  2. 解锁小鹏G9的隐藏功能
  3. 神经网络入门基本问题
  4. 最大熵原理-最低风险模型
  5. 数据结构与算法基础ppt
  6. Solidity语法大致总结
  7. sql server 2017 jdbc使用
  8. 软件工程中常见的工具介绍
  9. UnityShader_泳池实现
  10. Unity学习回忆--3D坦克大战