解析NK.BIN

最近做NBOOT,EBOOT,对TOC参数不是很明白,老大说得先熟悉一下NK.bin。故找到以下好文,对NK.bin有了一个深入的了解。感谢作者。

study NK.bin format

The information from WINCE500\PRIVATE\WINCEOS\COREOS\NK\TOOLS\ROMIMAGE\VIEWBIN

1. 初始識別字組

檔案開頭的7個位元組是固定的識別字組("B000FF\x0A", 0x42, 0x30, 0x30, 0x30, 0x46, 0x46, 0x0A)

image

2. 映射檔案在記億體中對應的起始位址

在這個檔案可以看到,對應到 0x801A0000,這個值是用 Config.bib 在Memory Section 裡面設定的。當makeimg時,會呼叫 Fmerge.exe 去合併所有用到的 Binary Image Builder Files (.BIB)檔案,最後產生一個 CE.BIB,之後會在呼叫Romimage.exe(Rom image Builder Tool),依照CE.BIB裡面的設定,去定址所有檔案與在安排在記憶體中的位址

image

3. 映射檔案長度

這個檔案長度值是 0x20D34C8

image

4. 資料錄(Record)

    接下來是 Data Record , 在WinCE 5.0 的 ViewBin 中,可以看出定義最大不會超過 2048 個,每個Record 有 3個 DWORD的資料紀錄,依序代表資料起始位址(Start address of Record)、資料長度(Length of Record)檢查碼(Chksum of Record),資料起始位址與檢查欄位同時為零時,則代表起始位址。基本上是一個 List 結構的資料錄

在下圖用了紅色框,框出Record的起始、長度、檢查碼,緊跟的白色框,則是該Record的實際資料內容。

image 

用 Pseudo code 表示可以視為

     struct {

DWORD  StartAddr;

DWORD  Length;

DWORD  ChkSum;

BYTE*     pDATA;

} Record;

Record  LRec[2048];

LRec[0].StartAdd = 0x801A0000;

LRec[0].Length = 0x00000004;

LRec[0].ChkSum = 0x000001EB;

LRec[0].pData = { 0xFE, 0x03, 0x00, 0xEA };

LRec[1].StartAddr = 0x801A0040;

LRec[1].Length = 0x00000008;

LRec[1].ChkSum = 0x000001FB;

LRec[1].pData = { 0x45, 0x43, 0x45, 0x43, 0x40, 0x02, 0x27, 0x82 };

5. 資料內容紀錄 (Table Of Context Record)

當檔案中的資料錄全部找出來後,首先需要找出那個是 TOC 資料錄,首先從頭開始在一次找尋資料錄,首先找出資料錄長度為 8的,然後比較識別字元,這個識別字元定義在 WINCE500\PUBLIC\COMMON\OAK\INC\romldr.h (在 WinCE 5.0中,這個識別字元 ROM_SIGNATURE 內容為 0x43454345(它使用 DWORD型態,所以在PC上的檔案位址排列會變成 0x45434543,恰恰等於目前觀察檔案的 Record 1。Record 1 剩下的資料,就是 TOC的位址 0x82270240。

接下來繼續找資料錄大小為 ROMHDR大小的,這個ROMHDR 一樣定義在 romldr.h中,在WinCE 5.0中定義是 84 (0x54) ,恰好 Record 282 大小為 0x54,而起始值為 0x82270240(註: 在ViewBin 中可以看到,也許有可能會發生找錯資料錄的情況,ViewBin  中針對這種情況有雙重確認機制)。

image

6. 讀取 ROMHDR (ROM Header Record)

假設找到正確的 ROMHDR 後,開始分析ROMHDR的內容

ROMHDR.dllfirst  -> 在Slot 0 (Current Process 空間中)的DLL的起始位址

ROMHDS.dlllast   -> 在 Slot 0 的結束位址

DLL 在 Slot 0的空間位址映射,是為了當 DLL 被系統載入時,所有的 Process 可以共享DLL的程式碼與資料的一種設計,在早期算是一種折衷設計,這是為了減少 context switch與記憶體的消耗,算是一種必要之惡,也因此原本在執行時其中的程式空間的 32MB 會被扣除這塊 DLL所佔用的空間。但這幾年嵌入式系統的CPU與記憶體的能力也是大幅的提昇,許多嵌入式系統的驅動程式,與相關應用需求,讓嵌入式系統必須18般武藝樣樣俱全。為了能讓WinCE 放進更多DLL,在WinCE 4.0 ~ WinCE 5.x 中,Microsoft 提出了另一個方法 XIP DLLs,Slot 1 成為 XIP Dlls 的空間。

image

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/436475.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

查询链接服务器信息,SQL Server链接服务器

SQL Server提供链接到另一个服务器的选项。这通常被用来连接到其他SQL Server数据库,但它也可以被用来连接到一个Microsoft Access数据库。这是通过链接服务器节点成为可能。链接服务器节点可以连接到另一个数据库,通常/通常在不同的机器上运行&#xff…

【转】阿里技术专家详解DDD系列 第二讲 - 应用架构

填坑。谢谢大家对这个系列的期待,持续更新,欢迎关注此账号。 第一篇内容附地址: 阿里巴巴淘系技术:阿里技术专家详解 DDD 系列 第一讲- Domain Primitive​zhuanlan.zhihu.com 架构这个词源于英文里的“Architecture“&#xff…

正三角形旋转一周得到的图形是_七年级数学上册_第一章《基本的几何图形》_知识点...

第一章 基本的几何图形复习范围:基本的几何图形知识点回顾:知识点一:几何体的认识1.我们常见的几何体有:正方体、长方体、圆锥、圆柱、棱柱、棱台、棱锥、球,其中____________属于柱体, _________属于锥体。…

CEO、COO、CFO、CTO、CIO是什么意思

CEO(Chief executive officer)首席执行官 类似总经理、总裁,是企业的法人代表。COO(Chief operating officer)首席运营官 类似常务总经理CFO(Chief financial officer)首席财务官 类似财务总经理CTO(Chief technology officer)首席技术官 类似总工程师CIO(Chief inf…

Nand Flash原理分析与编程

NAND Flash 在嵌入式系统中的地位与PC机上的硬盘是类似的。用于保存系统运行所必需的操作系统,应用程序,用户数据,运行过程中产生的各类数据,系统掉电后数据不会护丢失。现在的Flash主要有两咱,一种是NAND Flash 一种是…

NetTiers模板中各个选项的一些解释

名称ChooseSourceDatabase选择数据库MappingFileMapping文件位置(会根据output目录自动更改,不需要设置)OutputDirectory文件输出目录RootNameSpace根节点的命名空间Filter by Individual Objects - OptionalEnumTables枚举表,表中的所有数据都会被用作枚举类型,要求:第一列为主…

php调用谷歌翻译接口_一个google翻译的php调用方式

直接看代码<?php /*** translate()** 翻译函数** param mixed $text 待翻译的内容* param string $language 翻译的语言&#xff0c;格式为 当前语言|目标语言* return*/function translate($text,$languagezh-cn|en){if(empty($text)){return false;}set_time_limit(0);$h…

【转】应用架构之道:分离业务逻辑和技术细节

架构 什么是架构&#xff1f; 关于架构这个概念很难给出一个明确的定义&#xff0c;也没有一个标准的定义。 硬是要给一个概述&#xff0c;我认为架构就是对系统中的实体以及实体之间的关系所进行的抽象描述。 架构始于建筑&#xff0c;是因为人类发展&#xff08;原始人自…

ARM9之NAND FLASH总结

/*author----->Armking*/ /*data----->2008年9月2*/ /*ps:本人总结&#xff0c;备于日后查阅&#xff0c;如若转载&#xff0c;请注明出处*/ /*QQ:382750150*/ 写于篇头&#xff1a; 终于又开始接着学习了&#xff0c;只是不知道为什么JTAG又连不上目标板了&#xff0c;如…

内连接

内连接查询操作列出与连接条件匹配的数据行&#xff0c;它使用比较运算符比较被连接列的列值。内连接分三种&#xff1a;1、等值连接&#xff1a;在连接条件中使用等于号()运算符比较被连接列的列值&#xff0c;其查询结果中列出被连接表中的所有列&#xff0c;包括其中的重复列…

python中赋值运算符有哪些_Python代码中有哪些赋值运算符呢?

摘要:下文讲述Python代码中赋值运算符的相关的简介说明&#xff0c;如下所示:赋值运算符主要用于赋值操作&#xff0c;用于为对象赋值&#xff0c;那么Python中赋值运算符到底有哪些呢&#xff1f;下文将一一道来&#xff0c;如下所示:赋值运算符详解说明示例说明简单的赋值运算…

解读HTTP包

解读HTTP包&#xff1a;[摘要]详细介绍HTTP包的格式、协议内容及相关的处理方法&#xff0c;内容分3节&#xff1a;1、超文本传输协议及HTTP包;2、Socket类与ServerSocket类;3、读取HTTP包。 一、超文本传输协议及HTTP包 HTTP协议用于在Internet上发送和接收消息。HTTP协议是一…

几个颇有创意的网站推广方法(推荐)

几个颇有创意的网站推广方法(推荐)元旦佳节&#xff0c;相信有不少朋友从QQ、MSN、E-mail里收到了亲友发来的贺卡&#xff0c;其中流传得比较多的是几张比较有创意的图片&#xff0c;他们都只需要在链接里输入你想祝福的人的名字&#xff0c;然后该文字会出现在图片中去&#x…

明光市机器人_“柠檬皮”软体机器人!26岁小伙联合发明光磁场机器人|专访...

会行走、能搬货&#xff0c;还会 “跳街舞”。近日&#xff0c;美国西北大学发明出一款软体机器人&#xff0c;该机器人看起来像一只剥开的柠檬皮&#xff0c;它能在水箱中运动&#xff0c;并拥有多种本领&#xff0c;比如搬运物品、催化化学反应、输送治疗剂等&#xff0c;而它…

【转】SD-WAN,到底是什么*****

作为一个热门概念&#xff0c;SD-WAN近年以来频繁地出现在我们的视野当中。 很多人说&#xff0c;它是未来最具发展潜力的通信技术之一&#xff0c;极具商业价值。 行业里的老牌通信设备商和运营商对它一致看好&#xff0c;新兴创业企业也把它视为千载难逢的风口机遇&#xff0…

超文本传输协议及HTTP包

HTTP协议用于在Internet上发送和接收消息。HTTP协议是一种请求-应答式的协议 ——客户端发送一个请求&#xff0c;服务器返回该请求的应答&#xff0c;所有的请求与应答都是HTTP包。HTTP协议使用可靠的TCP连接&#xff0c;默认端口是80。HTTP的第一 个版本是HTTP/0.9&#xff0…

ffmpeg 截图太模糊了_PPT图片模糊?导师说放大!

今日分享图片智能放大●●●●重庆大学PPT图片太模糊了&#xff0c;要用原图&#xff01;放大&#xff0c;放大导师如是说&#xff0c;小硕表示&#xff0c;图片本就这样这咋办&#xff1f;不愁&#xff0c;稳住接着看在做PPT时还是做论文时想用某张图片&#xff0c;但是直接拉…

【转】全了!临港四镇最新对口地段小学,中学都在这里,看看你的孩子能读哪个学校

临港的家长们关于自己的孩子就读哪个学校&#xff0c;家长们一直都很关心和关注&#xff0c;每个家长对孩子的教育很是重视&#xff0c;有部分家长买临港的房子就冲着学区去的&#xff0c;临港的优质教育资源一直是被居民所称赞的&#xff0c;学校也没家长失望&#xff0c;个别…

状态栏显示时间代码

状态栏显示时间代码 <html><head><title>网页特效|Linkweb.cn/Js|---状态栏滚动时间</title></head><body>请看状态栏<BR><!--将以下代码加入HTML的<Body></Body>之间--> <SCRIPT languageJavaScript>var o…

WINCE驱动程序快速入门

有人也许和我一样比较心急&#xff0c;想尽快知道如何去写一个具体的驱动程序&#xff0c;这里&#xff0c;假设您对驱动程序已经有比较好的了解&#xff0c;告诉大家一个快速上路的方法。当然&#xff0c;如果您有足够的时间我建议在动手之前还是深入了解一下CE整个系统架构。…