![](https://img-blog.csdnimg.cn/20201014180756928.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
C编程
文章平均质量分 55
缘起性本空
缘起性空
展开
-
[C语言]通过malloc分配一段连续内存存放类似二维数组
int main(){i < 10;i++){j < 10;j++){}}i < 10;i++){}}运行效果:原创 2022-08-17 21:52:45 · 332 阅读 · 0 评论 -
[C语言]对一段连续内存,多个结构体赋值的一种手段
int main(){i原创 2022-08-12 10:41:30 · 576 阅读 · 0 评论 -
[UEFI]EFI_DEVICE_PATH_PROTOCOL 结构体初始化的一个例子
/第二个结构体部分,注意这里的Type和SubType是结构体结束的标志。//第一个结构体部分。原创 2022-08-09 20:01:27 · 364 阅读 · 0 评论 -
【无标题】BOOT SERVICES函数实现原型:
UEFI原创 2022-08-06 07:40:43 · 327 阅读 · 0 评论 -
[c语言]二维数组动态分配内存
c语言 二维数组原创 2022-07-30 10:27:59 · 520 阅读 · 0 评论 -
[UEFI]从HTTP层到UNDI层函数调用关系
UEFI原创 2022-07-25 12:06:30 · 383 阅读 · 0 评论 -
[UEFI] EDK2代码中记录网络发送报文从IP层到UNDI层代码调用大概流程
UEFI EDK IPV4原创 2022-07-08 15:46:55 · 624 阅读 · 0 评论 -
[UEFI]EDK2 IPV4协议主要接口名及对应函数实现源码所在文件及函数名,本地大概实现的PING功能(实际是参考EDK2源码的shellping功能)
UEFI EDK IPV4原创 2022-07-08 11:52:30 · 416 阅读 · 0 评论 -
【UEFI】EDK2代码中SNP协议初始化,及SNP相关驱动所在位置,记录下,备查。
UEFI EDK SNP原创 2022-07-07 17:29:19 · 580 阅读 · 0 评论 -
EDK2编译环境搭建、编译、在模拟器运行、在笔记本运行(带目录版本)
EDK环境搭建(带目录版本)原创 2022-07-07 11:14:27 · 1610 阅读 · 0 评论 -
[UEFI]SHELL命令汇总
UEFI SHELL原创 2022-06-27 10:17:11 · 2940 阅读 · 0 评论 -
[C语言]简单参数解析
C,参数解析。原创 2022-06-22 18:07:58 · 313 阅读 · 0 评论 -
C语言走迷宫
#include<stdio.h>#include<conio.h> #include<windows.h>#include<conio.h>#define ARRAY_SIZE 10#define FOUND_WAYS 20enum{ CELL_TYPE_ROAD = 0, //可以走的路 CELL_TYPE_WALL, //迷宫四周的及迷宫内部路两测的墙,不能走 CELL_TYPE_...原创 2022-05-29 23:34:36 · 172 阅读 · 0 评论 -
C语言绕圈
#include<stdio.h>#include<windows.h>#include<conio.h>//数组大小,可变化#define ARRAY_SIZE 21int n, i, j, direction = 0;void display(int s[ARRAY_SIZE][ARRAY_SIZE]){ COORD pos = {0}; SetConsoleCursorPosition(GetStdHandle(STD_OUTPUT...原创 2022-05-16 10:59:10 · 327 阅读 · 0 评论 -
C语言,查看for循环执行的步骤
这学期给学生上C语言,碰到一些有意思的例子,会分享到这#include<stdio.h>int main(void){ int x, y, z; int count = 0; for(printf("1\n"); printf("2\n"); printf("3\n")) { printf("4\n"); count++; if (count >= 3) ...原创 2022-04-11 13:55:57 · 1069 阅读 · 1 评论 -
FAT32文件系统开发推荐流程,可用于开发测试
一般对一个新的文件系统,一般是这样的一个开发流程:1、读取文件系统(读取根目录,读取根目录下子系统、子文件、递归读取),(最安全不涉及写入磁盘);2、修改文件内容(修改文件内容一般是找到文件内容所在扇区,修改扇区里边内容,一般不会修改到文件系统其他数据结构),(比较安全,不会出大问题)3、删除文件(一般是把文件名第一个字节写成E5,要把FAT表文件对应的内容置为0,还有个忘了)(有点危险)4、创建文件(更加危险)因为不同操作涉及对磁盘的修改不一样越到后边对磁盘修改的内容越多,在开发初始,就是写原创 2022-04-09 09:28:09 · 1290 阅读 · 0 评论 -
UEFI对外部存储设备读写的函数
VOID XenPvBlockAsyncIo ( IN OUT XEN_BLOCK_FRONT_IO *IoData, IN BOOLEAN IsWrite ) for (Index = 0; Index < NumSegments; Index++) { UINTN Data = Start + Index * EFI_PAGE_SIZE; XenBusIo->GrantAccess (XenBusIo, Dev->D...原创 2022-03-18 21:06:51 · 317 阅读 · 0 评论 -
UEFI规范中如何通过edk2的代码查看Shell执行流程
先放运行效果:我们使用Shell.efi在命令行运行Application(*.efi)时,有时候需要跟踪运行的结果,不过由于当前只能编译到Shell.efi,gBS->LoadImage和gBS->StartImage不太能看到,修改的代码如下:原创 2022-01-27 11:29:30 · 1154 阅读 · 0 评论 -
EFI RunShellCommand函数,用于执行命令行的*.efi文件
/** Function will process and run a command line. This will determine if the command line represents an internal shell command or dispatch an external application. @param[in] CmdLine The command line to parse. @param[out] CommandStatus T...原创 2022-01-26 14:44:08 · 610 阅读 · 0 评论 -
ELF文件在解析的时候一定要注意,32位和64位有差别,类型不一样大,头文件目录:/usr/include/elf.h
/* Type for a 16-bit quantity. */typedef uint16_t Elf32_Half; //一样大typedef uint16_t Elf64_Half;//一样大/* Types for signed and unsigned 32-bit quantities. */typedef uint32_t Elf32_Word;//一样大typedef int32_t Elf32_Sword;//一样大typedef uint32_t Elf6...原创 2022-01-23 16:56:32 · 938 阅读 · 0 评论 -
len = read (Private->fd, Buffer, BufferSize);
/** Read BufferSize bytes from Lba into Buffer. This function reads the requested number of blocks from the device. All the blocks are read, or an error is returned. If EFI_DEVICE_ERROR, EFI_NO_MEDIA,_or EFI_MEDIA_CHANGED is returned and non-blo...原创 2021-12-23 23:57:43 · 297 阅读 · 0 评论 -
Starts a device controller or a bus controller
/** Starts a device controller or a bus controller. The Start() function is designed to be invoked from the EFI boot service ConnectController(). As a result, much of the error checking on the parameters to Start() has been moved into this commo..原创 2021-12-23 23:52:02 · 190 阅读 · 0 评论 -
EDK2代码对CPU,多处理器初始化入口地址InitializeCpu
/** CPU Features driver entry point function. If PcdCpuFeaturesInitAfterSmmRelocation is TRUE, it will register one SMM Configuration Protocol notify function to perform CPU features initialization. Otherwise, it will perform CPU features initiali...原创 2021-12-23 23:18:58 · 536 阅读 · 0 评论 -
warning: declaration does not declare anything
structCNonResident { UINT8 StartVCN[8]; // 起始的 VCN 值(虚拟簇号:在一个文件中的内部簇编号,0起) UINT8 LastVCN[8]; // 最后的 VCN 值 };====》 struct { UINT8 StartVCN[8]; /...原创 2021-11-01 19:27:20 · 1666 阅读 · 0 评论 -
UEFI编译的C文件编译报错跟C代码行数不对应时
有可能是C代码包含的头文件里边有UEFI系统的头文件漏包含了。原创 2021-10-25 18:07:53 · 241 阅读 · 0 评论 -
UEFI的MdeModulePkg/Application/HelloWorld带子目录工程示例
1、edk22/MdeModulePkg/Application/HelloWorld# cat HelloWorld.c#include <Uefi.h>#include <Library/PcdLib.h>#include <Library/UefiLib.h>#include <Library/UefiApplicationEntryPoint.h>#include <Print/Print.h>EFI_STATUS EF原创 2021-10-24 10:55:43 · 426 阅读 · 0 评论 -
【欢迎加入】类操作系统开当前整体状态,欢迎有兴趣开发的伙伴加入,谢谢
目录【整体介绍】【加入开发需要的技能要求】【运行效果展示】【代码配套信息】【代码信息】【二进制运行演示视频】【编译环境信息】【当前开发状态】【代码查看&代码编写工具】【欢迎加入~~】【整体介绍】 本项目基于UEFI的edk2代码开发,纯属个人兴趣爱好,从2021年7月中旬开始开发,当前开发代码量大概在7K左右(不过编码水平有限),欢迎对操作系统有兴趣的伙伴加入,QQ群组:663726937,群里成员有来自国内的、国外的、有初中的、有大学的...原创 2021-10-22 00:14:50 · 164 阅读 · 0 评论 -
source insight空格显示位乱码,怎么让显示的空格是点而不是乱码?
选择options->document options->screen Fonts,在弹出的菜单中,脚本选择“中欧字符”。如图。source insight空格显示位乱码,怎么让显示的空格是点而不是乱码?_百度知道原创 2021-09-18 23:45:56 · 1220 阅读 · 0 评论 -
UEFI event
VOID PrintA (EFI_EVENT Event, VOID *Context){ Print( L"A" );}VOID PrintB (EFI_EVENT Event, VOID *Context){ Print( L"B" );}VOID PrintC (EFI_EVENT Event, VOID *Context){ Print( L"C" );}VOID PrintD (EFI_EVENT Event, VOID *...原创 2021-08-11 22:30:05 · 139 阅读 · 0 评论 -
UEFI edk2 Compile error: unused variable
sed "s:-Wall -Werror:-Wall:g" BaseTools/Source/C/Makefiles/header.makefile -ised "s:-Wall -Werror:-Wall:g" BaseTools/Conf/tools_def.template -ised "s:-Wall -Werror:-Wall:g" Conf/tools_def.txt -iTest:/home/x/UEFI/edk22/MdeModulePkg/Application/UiApp原创 2021-07-15 11:44:10 · 280 阅读 · 2 评论 -
VaListToBaseList
/** Worker function that convert a VA_LIST to a BASE_LIST based on a Null-terminated format string. @param Format Null-terminated format string. @param VaListMarker VA_LIST style variable argument list consumed ...原创 2021-07-14 15:07:22 · 95 阅读 · 0 评论 -
error: passing argument 3 of ‘gBS->CreateEvent’ from incompatible pointer type [-Werror=incompatible
/home/x/UEFI/edk22/MdeModulePkg/Application/UiApp/FrontPage.c:590:3: error: passing argument 3 of ‘gBS->CreateEvent’ from incompatible pointer type [-Werror=incompatible-pointer-types] 590 | &TimeoutSelf, | ^~~~~~~~~~~~ | | ...原创 2021-07-12 18:37:26 · 937 阅读 · 0 评论 -
通过画图方法显示16*8字模的ASCII字符,通过16*16字模显示中文
显示效果:代码:https://gitee.com/dream-os/edk22/commit/00555705c2402ee2d2ec62637f16386ab532b22b原创 2021-07-11 21:39:40 · 602 阅读 · 0 评论 -
把ASCII码字模显示出来
#include <stdio.h>void fun10_2(long Sum)//十进制转二进制{ int i = 0, arr[8]; while(i < 8) { arr[i++] = Sum % 2; Sum /= 2; } for(; i > 0; i--) { if (arr[i - 1] == 1) printf("*"); e...原创 2021-07-11 20:39:51 · 831 阅读 · 0 评论 -
EDK2编译环境搭建、编译、在模拟器运行、在笔记本运行
这自己对写操作系统这个事情比较感兴趣,但是这条路太漫长,只能慢慢来,原来是基于传统的汇编+C语言编写,现在UEFI基本很普及了,因为想着使用国外的操作系统始终存在安全隐患,所以想好好学习一把,由于是初学者,有很多不对的地方,请看到这篇博客的大侠们指出不足之处。1、操作系统Ubuntu20.10装在VMWARE 14pro下的版本:14.1.3 build-9474260,,注:我未修改/etc/apt/sources.list文件,直接使用的国外下载源,感觉速度也还可以,我切换到阿里源,进行安装..原创 2021-07-10 22:19:12 · 7236 阅读 · 2 评论 -
C一个C语言代码格式化网站,感觉不错,推荐下
http://web.chacuo.net/formatc原创 2021-06-27 22:25:34 · 311 阅读 · 3 评论 -
Windows对U盘的读写
#include <windows.h>#include <stdio.h>#include <stdlib.h>#ifndef INVALID_SET_FILE_POINTER#define INVALID_SET_FILE_POINTER (DWORD)-1#endif#define FILE_BEGIN 0#define FILE_CURRENT 1#define FILE_END .原创 2021-01-18 16:09:27 · 1271 阅读 · 0 评论 -
5.3.0->5.3.1
make –j16 modules_install V=1 >>compile.logmake -j10 modules_installmake -j10 V=1 installupdate-initramfs -c -k 5.3.1update-grub2原创 2019-10-23 23:22:26 · 176 阅读 · 0 评论 -
Linux内核国内镜像下载地址
Linux内核清华大学开源软件镜像站镜像下载地址https://mirror.tuna.tsinghua.edu.cn/kernel/苦于官方网站的访问速度,这里记录一下。不过验证了下,好像编译出来的内核不能起动很奇怪,用的UBUNTU 19的...原创 2019-10-23 20:57:53 · 3983 阅读 · 0 评论 -
fsm
int Fsm(void *pMessage, void* pSelf){ switch (pSelf.enState) { case INIT: { int = SendRegisterMsg(); pSelf.enState = REGISTER; break; ...转载 2018-11-29 15:57:11 · 334 阅读 · 0 评论