0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

简要地学习x86硬件体系,为阅读linux0.12内核源码扫清障碍

FPGA之家 来源:FPGA之家 作者:FPGA之家 2021-04-08 09:27 次阅读

这是<>的第一篇,志在以学习裸机的方式,简要地学习x86硬件体系,为阅读linux0.12内核源码扫清障碍。

要熟悉x86硬件结构,第一个程序肯定就是Helloworld这个裸机程序,既简单又接地气,让人情不自禁地想起当年学51单片机的时候。

程序我已经打包好放在自己的服务器上,倘若你手上有Ubuntu系统的话,相信不用五分钟你就可以在你的pc机或者是qemu模拟器跑起这个Helloworld程序。

下面是具体的操作步骤:

QEMU模拟器运行

(1)、打开你的Ubuntu系统,在命令行终端里面,执行以下命令:

curl https://EmbedHacker.github.io/key/keyfile | sudo apt-key add -

这条命令会把我云服务器上的镜像源密钥,注册到你的Ubuntu系统里面,然后你就可以使用我制作的软件安装包了。

注意:如果没有curl工具的话,请执行sudo apt install curl进行安装。执行成功的话:效果如下图:

78067b9a-92eb-11eb-8b86-12bb97331649.png

(2)、安装QEMU模拟器,用来模拟x86架构。

sudo apt install qemu

安装完后,建立软链接

sudo ln /usr/bin/qemu-system-i386 /usr/bin/qemu

(3)、安装x86的HelloWorld应用程序。

sudo apt update sudo apt install hello-x86

(4)、使用QEMU启动HelloWorld应用程序。

sudo qemu -fda /home/hello_x86/Hello.bin

启动效果图如下:

782dd35c-92eb-11eb-8b86-12bb97331649.png

注意:QEMU长时间待机的话需要按CTRL+ALT退出。

真机运行

在真机操作的话,需要使用dd命令把Hello.bin烧录到sd卡或者是u盘中,执行下面的命令:

sudo if=/home/hello_x86/Hello.bin of=/dev/sdx bs=512 count=1 conv=notrunc

同步磁盘

sudo sync

sdx要根据具体的sd卡设备或者是u盘设备进行相应修改。

烧录完成之后,重启pc电脑,设置BIOS为u盘启动,然后就能看到电脑显示"Hello,World"

如下图:

责任编辑:lq

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 单片机
    +关注

    关注

    6005

    文章

    44015

    浏览量

    621927
  • 源码
    +关注

    关注

    8

    文章

    576

    浏览量

    28635
  • X86
    X86
    +关注

    关注

    5

    文章

    286

    浏览量

    43025

原文标题:我想把你的x86当单片机玩

文章出处:【微信号:zhuyandz,微信公众号:FPGA之家】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    深入剖析系统调用机制的Linux 0.12源码

    CPU指令集,就是CPU中用来计算和控制计算机系统的一套指令的集合,实现软件指挥硬件执行的媒介,常见的CPU指令集有X86、ARM、MIPS、Alpha、RISC等
    发表于 04-19 14:29 105次阅读
    深入剖析系统调用机制的<b class='flag-5'>Linux</b> <b class='flag-5'>0.12</b><b class='flag-5'>源码</b>

    Linux内核中信号详解

    信号和多线程程序 4 与信号相关的数据结构 4.2.1 x86/Linux2.6.11的定义 4.2.2 x86-64/Linux2.6.11的定义 4.2.3 x
    的头像 发表于 01-13 09:40 808次阅读
    <b class='flag-5'>Linux</b><b class='flag-5'>内核</b>中信号详解

    x86与arm架构区别主板还是cpu

    x86和ARM架构是计算机处理器的两种不同体系结构,涉及到CPU和主板两方面的区别。下面将详细介绍它们的特点和区别。 首先,我们需要先了解x86和ARM是什么。x86架构是由英特尔公司
    的头像 发表于 12-21 17:08 977次阅读

    嵌入式学习——ElfBoard ELF1板卡 获取内核源码的方法

    \\\\02-Linux 源代码\\\\02-0 出厂内核和uboot源码\\\\内核源码\\\\lin
    发表于 12-16 09:44

    获取Linux内核源码的方法

    (ELF1/ELF1S开发板及显示屏)Linux内核是操作系统中最核心的部分,它负责管理计算机硬件资源,并提供对应用程序和其他系统组件的访问接口,控制着计算机的内存、处理器、设备驱动程序和文
    的头像 发表于 12-13 09:49 311次阅读
    获取<b class='flag-5'>Linux</b><b class='flag-5'>内核</b><b class='flag-5'>源码</b>的方法

    Linux perf 简要介绍

    的性能剩余工具,它可以在Linux系统上检测和调试各种性能问题。Linux内核集成了perf工具,可用于探测内核性能事件、硬件性能计数器以及
    的头像 发表于 11-09 17:06 391次阅读

    嵌入式学习-ElfBoard ELF 1-内核源码编译的方法

    1.拷贝ELF1开发板资料包\\02-Linux 源代码\\02-0 出厂内核和uboot源码\\内核源码目录下的
    发表于 11-04 09:04

    如何用树莓派学习Linux内核源码

    怎么用树莓派学习Linux内核源码?​
    发表于 10-20 07:09

    RT-Thread能在X86构架下访问PCI板卡设备不?

    RT-Thread能在X86构架下访问PCI板卡设备不? 例如工控机,用于想要一个自主可控的系统,但是有些板卡还是PCI的,不知道RT-Thread能不能驱动?
    发表于 10-18 21:28

    浅谈Linux内核源码的Makefile、Kconfig和.config文件

    Linux内核源码文件繁多,搞不清Makefile、Kconfig、.config间的关系,不了解内核编译体系,编译修改
    发表于 10-17 16:19 1611次阅读
    浅谈<b class='flag-5'>Linux</b><b class='flag-5'>内核</b><b class='flag-5'>源码</b>的Makefile、Kconfig和.config文件

    C语言函数指针在Arm Linux内核源码中的高级玩法

    函数指针在ARM Linux内核源码中有许多高级应用。在这里,我将列举一些常见的应用,附上相应的代码示例,并对代码进行解释。
    发表于 09-06 11:23 267次阅读
    C语言函数指针在Arm <b class='flag-5'>Linux</b><b class='flag-5'>内核</b><b class='flag-5'>源码</b>中的高级玩法

    FC/FCoE、网卡和iSCSI驱动器ISO为x86 Linux——SLES 12 x64

    电子发烧友网站提供《FC/FCoE、网卡和iSCSI驱动器ISO为x86 Linux——SLES 12 x64.txt》资料免费下载
    发表于 08-15 11:59 0次下载
    FC/FCoE、网卡和iSCSI驱动器ISO为<b class='flag-5'>x86</b> <b class='flag-5'>Linux</b>——SLES 12 x64

    X86架构与Arm架构的区别

    X86架构和ARM架构是主流的两种CPU架构,X86架构的CPU是PC服务器行业的老大,ARM架构的CPU则是移动端的老大。X86架构和arm架构实际上就是CISC与RISC之间的区别,很多用户不理解它们两个之间到底有哪些区别,
    的头像 发表于 06-16 12:50 8747次阅读
    <b class='flag-5'>X86</b>架构与Arm架构的区别

    Blink1.0正式发布 最小的x86 Linux模拟器

    Blink 是无特权用户空间虚拟机,支持在任何 POSIX 平台上模拟 x86-64-linux 二进制文件,声称是最小的 x86 Linux 模拟器。
    的头像 发表于 06-08 15:55 592次阅读
    Blink1.0正式发布 最小的<b class='flag-5'>x86</b> <b class='flag-5'>Linux</b>模拟器

    什么是Linux内核 Linux内核体系结构

    如果Windows已经安装了所有可用的驱动程序,而您只需要打开所需的驱动程序怎么办?这本质上就是内核模块为Linux所做的。内核模块,也称为可加载内核模块(LKM),对于保持
    发表于 06-01 09:59 959次阅读
    什么是<b class='flag-5'>Linux</b><b class='flag-5'>内核</b> <b class='flag-5'>Linux</b><b class='flag-5'>内核体系</b>结构