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

网站开发工程师公司合肥企业网站

网站开发工程师公司,合肥企业网站,做房产应看的网站,做国际网站有用UEFI系列文章目录 第一章 SEC阶段讲解 第二章 PEI阶段讲解 文章目录 UEFI系列文章目录前言一、PEI阶段二、PEI Service三、PEI flow四、InstallPpi和LocatePpi举例五、Hob六、PEI入口和出口 前言 众所周知#xff0c;UEFI bios分为四个阶段#xff1a;SEC、PEI、DXE、BDSUEFI bios分为四个阶段SEC、PEI、DXE、BDS运行完毕才能进到setup界面或是进入操作系统。 x86平台较为经典而ARM在UEFI之前需要运行ATF(Arm Trusted Firmware)ATF做了SEC和PEI的部分工作且ARM部分平台不需要PEI。 这篇文章着重介绍UEFI bios的PEI阶段。 提示以下皆基于x86 UEFI bios 一、PEI阶段 PEI: Pre-EFI initialization 预初始化阶段 1.为什么需要PEI 内存还未初始化。 芯片组还未初始化。 ROM上要执行的code还没被解压。 2.PEI阶段做了哪些事情 CPU\芯片组\内存初始化把PEI阶段收集到的某些信息会存放进Hob传递给下一个阶段DXE控制权交给DXE固件损坏后的紧急修复recovery从 S3 睡眠状态CPU停止工作挂起到内存RAM恢复 (Disable CAR, Eable Cache恢复成缓存本身的作用) 3.PEI组成元素 PEI Core 为提供PEIMservice 加载执行PEIMPEI Service PEl Core服务例程函数所有PEIM都可以使用它们PEIM 意思是PEI ModulePEI阶段执行模块的type名PPI PEl to PEl Interface , PEIM为其他PEIM提供调用接口 需要其他地方install了才能去locate 二、PEI Service 1.PPI Service {InstallPpi ReInstallPpi LocatePpi NotifyPpi } 2.Boot Mode Services | s3、s4、s5、recovery、flash更新等 {GetBootMode SetBootMode } 3.HOB Services {CreateHob GetHobList } 4.Firmware Volume Service | 固件空间 {FfsFindNextVolume FfsFindNextFile FfsFindSectionData } 5.PEI Memory Service | 内存 { InstallPeiMemory AllocatePages AllocatePool CopyMem SetMem } 6.Status Code Service | 状态 {ReportStatusCode } 7.Reset Service {ResetSystem } 其中ppi相关非常重要。 installppi是安装ppi每个ppi都有其特定的guid写了不同的功能后installppi来安装好。后续可通过在需要的地方locateppi调用。 reinstallppi就是字面上的重新安装。 notifyppi一种类似中断的回调触发在对应的ppi被install或reinstall会触发。 Hob的CreateHobH和GetHobList其实都是PEI时用的前者是创建Hob后者是获取HobList的地址要想找到自己创建的hob还需调用其他函数和循环来找比如通过当时存储的guid。 ReportStatusCode是往80 port上写值。 三、PEI flow 初始化PEI Core有序dispatch分发PEIM执行执行的PEIM都会有一个entry point入口函数 如果设置了priority的话会按照优先级顺序执行也会按照依赖里的guid是否install上去没装上去就靠后、等待guid装上去了再执行。PEI Core dispatch DXE Ipl结束load进DXE 四、InstallPpi和LocatePpi举例 举例InstallPpi: 1.定义guid gCMOSREADWRITEGuid和我要执行的功能CMOSPpi EFI_GUID gCMOSREADWRITEGuid{0x41122338, 0x5678, 0x1234, {0x22, 0x55, 0x56, 0xe7, 0x55, 0xb2, 0x78, 0x77}}; void peiwritecmos8(UINT8 OFFSET,UINT8 DATA){IoWrite8(WRITE_READ_INDEX,OFFSET);IoWrite8(WRITE_READ_DATA,DATA); } UINT8 peireadcmos8( UINT8 OFFSET_READ){IoWrite8(WRITE_READ_INDEX,OFFSET_READ);return IoRead8(WRITE_READ_DATA);} typedef void(EFIAPI *WRITE_CMOS)(UINT8 OFFSET,UINT8 DATA); typedef UINT8(EFIAPI *READ_CMOS)(UINT8 OFFSET_READ); typedef struct SHOW_CMOS{WRITE_CMOS peiwritecmos8;READ_CMOS peireadcmos8; }CMOS_READ_WRITE;static CMOS_READ_WRITE CMOSPpi {peiwritecmos8,peireadcmos8 };2.拿着gCMOSREADWRITEGuid、CMOSPpi按照格式写EFI_PEI_PPI_DESCRIPTOR结构CMOS_PPI_WRITE_READ static EFI_PEI_PPI_DESCRIPTOR CMOS_PPI_WRITE_READ[] { { EFI_PEI_PPI_DESCRIPTOR_PPI | EFI_PEI_PPI_DESCRIPTOR_TERMINATE_LIST,gCMOSREADWRITEGuid, CMOSPpi} };入口函数内将写好的CMOS_PPI_WRITE_READ拿来安装 (*PeiServices)-InstallPpi(PeiServices, CMOS_PPI_WRITE_READ);举例LocatePpi: EFI_GUID gCMOSREADWRITEGuid{0x41122338, 0x5678, 0x1234, {0x22, 0x55, 0x56, 0xe7, 0x55, 0xb2, 0x78, 0x77}}; typedef void(EFIAPI *WRITE_CMOS)(UINT8 OFFSET,UINT8 DATA); typedef UINT8(EFIAPI *READ_CMOS)(UINT8 OFFSET_READ); typedef struct SHOW_CMOS{WRITE_CMOS peiwritecmos8;READ_CMOS peireadcmos8; }CMOS_READ_WRITE;//入口函数内 CMOS_READ_WRITE *readwritecmosppi;(*PeiServices)-LocatePpi(PeiServices,gCMOSREADWRITEGuid, //写guid0,NULL,readwritecmosppi //获取的函数) ; if((readwritecmosppi-peireadcmos8(0x38))!0){//调用函数readwritecmosppi-peiwritecmos8(0x39,0xf);} 五、Hob Hob是用来存放信息的东西用于PEI获取的信息传递给DXE可以使内存的信息、IO的信息等等。HobList以PHIT HOB开头之后的Hob排列呈链表。 Hob类型 PHIT Hob作为头Hob 描述物理内存信息Hob 内存空间分配Hob Fv Hob … PEI主要分为3个阶段 1.Pre memory 2.post memoryHobList - Termination、FV、physical memory、PHIT 4.DXE IPL(最后的PEIM)HobList - Termination、GUID Hobs、DXE Stack/BSP、DXE Core、FV、physical memory、PHIT DXE Main就可以获取到HobList Create a Hob代码 typedef struct [ EFI_HOB_GUID_TYPE EfiHobGuidType; OEM_DEFIN_TYPE XXX; }Demo_HOB; //Hob定义Status (*PeiServices)-CreateHob(PeiServices,EFI_HOB_TYPE_GUID_EXTENSION, //属性GUID_EXTENSIONsizeof(Demo_HOB),DemoHob); if (!EFI_ERROR(Status){ //赋值DemoHob-EfiHobGuidType.Name gDemoGuid;DemoHob-xxx YYY; }同EFI_HOB_TYPE_GUID_EXTENSION类似还有其他HOB属性 EFI_HOB_TYPE_HANDOFF EFI_HOB_TYPE_MEMORY_ALLOCATION EFI_HOB_TYPE_RESOURCE_DESCRIPTOR EFI_HOB_TYPE_GUID_EXTENSION(查找的时候就用guid查找) EFI_HOB_TYPE_FV EFI_HOB_TYPE_CPU EFI_HOB_TYPE_MEMORY_POOL EFI_HOB_TYPE_CV 最后带着hoblist去DXE这里是DXEIPL的函数 HandOffToDxeCore (DxeCoreEntryPoint, HobList); 六、PEI入口和出口 SEC带着SECCoreData和PPIList跳转PEIEntryPoint 入口PeiMain.c里的PeiCore pspei service 内存初始化、pei内存分配、hoblist头创建、PPIlist获取、PEIM dispatch先statuscode再nvram再其他 locate DXEIPL的ppi 转到DXEIPL函数一系类操作后BuildModuleHob来加Hob到DXE再带着HobList和DxeCoreEntryPoint跳转HandOffToDxeCore
http://www.dnsts.com.cn/news/153304.html

相关文章:

  • 桃江县建设局网站网站信息登记表
  • 中国网站名国家高新技术企业含金量
  • 夸克作文网站汕头市区
  • 惠安网站建设报价seo在哪可以学
  • 合肥知名建站公司wordpress的首页
  • 济南网站建设jnjy8谷歌paypal官网
  • 北京有做网站的吗我想自学建网站
  • 经典营销型网站二手网站建设论文答辩
  • 做兼职什么网站淘宝客手机网站
  • pc端网站建设联系方式可以赚零花钱的小程序
  • 网站里面的超链接怎么做网站开发用
  • 寒亭营销型网站建设太仓做网站的公司
  • 兰州市七里河建设局网站天眼查官网入口网页版
  • 邢台集团网站建设价格衡水网站制作公司
  • 如何引用网站图片怎么查看一个网站的后台
  • 重庆长寿网站建设海门建网站公司
  • 顺企网浙江网站建设如何开发游戏辅助软件
  • php网站建设实例视频教程wordpress 生成ppt
  • 网站怎么做三个页面网站门户是什么意思
  • 网站开发最佳组合移动互联网开发课件
  • 郑州网站推建设什么是移动端网站适配
  • 网站建设需要了解的信息工程分包网
  • 网站直接跳转移动终端网站建设
  • 创新的网站微信小程序代码大全
  • 企业网站建立公司济南网上注册公司流程
  • 广州网站建设联享科技剑阁县规划和建设局网站
  • 传诚信网站建设普宁17网站一起做网店
  • 仿网站开发最美情侣免费高清视频
  • 建设工程主管部门网站徐州人才网最新招聘
  • 企业客户信息管理软件湖北网站优化公司