Tag: 引导程序

通过Assembler在引导加载程序级别执行C程序

我在Assembler中编写了一个自定义(非常基本的“Hello world!”)引导加载程序,我想在其中执行一个C程序。 由于丢失了stdio.h文件,C程序会工作还是失败? 我怎么能将C程序和引导加载程序捆绑到一个单独的.bin文件中以转换为闪存驱动器/ CD?

编写C程序以调用另一个程序而不使用任何内置库

我正在尝试为boot-loader写一个简单的’go-command’,它将我带到RAM中的特定地址,例如0x18000000,它应该执行一个闪烁的程序。 我有两个.c文件说led.c和go.c,其中led.c闪烁两个LED。 但我想知道,我不知道如何将控制/调用其main()传递给此go.c文件转到该地址并开始闪烁LED? 但它应该没有包括其他头文件,库等。请帮助我! 提前致谢。 下面的代码是针对led.c的 void delay () { volatile int i; for(i=0;i<1000000;i++) {} } int main(void) { *led0=0; *led1=0; while(1) { *led0=1; delay(); *led0=0; *led1=1; delay(); *led1=0; } } 在我的go.c文件中,我想传递一个控件来调用这个led.c main()函数

编写一个简单的Bootloader HelloWorld – 错误函数打印字符串

我尝试创建一个打印“hello world”的简单引导程序。 当我调用一个只打印“hello world”的函数时,我可以这样做,但是当我调用一个函数来打印一个特定的字符串时,什么也没发生。 为此,我使用两个文件。 第一个是boot.ld,第二个是boot.cpp(它也可以在C中使用boot.c)。 首先,我从终端创建软盘: dd if = / dev / zero of = floppy.img bs = 512 count = 2880 其次,我编译代码(boot.cpp和boot.ld): gcc -c -g -Os -m64 -ffreestanding -Wall -Werror boot.cpp -o boot.o ld -static -Tboot.ld -nostdlib –nmagic -o boot.elf boot.o objcopy -O binary boot.elf boot.bin 最后,我将boot.bin添加到floppy.img中: dd if = boot.bin of = […]