liyux中的setup.s文件

告别乱码!手把手教你用Arduino和U8g2库点亮ST7920驱动的LCD12864屏幕 本文详细介绍了如何使用Arduino和U8g2库驱动ST7920控制的LCD12864液晶显示模块,从硬件连接到软件配置,提供系统化排障指南和优化技巧,帮助开发者解决常见显示问题如白屏、乱码等,实现稳定高效的显示效果。 阅读详情

1. setup程序的主要作用是利用ROM BIOS中断读取机器系统数据,并将这些数据保存到0x90000开始的位置(覆盖掉了bootsect程序),所取得的参数和保留的内存位置见下表。

内存地址

长度

(字节)

名称

描述

0x90000

2

光标位置

列号(0x00-最左端),行号(0x00-最顶端)

0x90002

2

扩展内存数

系统从1M开始的扩展内存数值(KB)

0x90004

2

显示页面

当前显示页面

0x90006

1

显示模式

 

0x90007

1

字符列数

 

0x90008

2

??

 

0x9000A

1

显示内存

显示内存(0x00-64k,0x01-128k,0x02-192k,0x30-256k)

0x9000B

1

显示状态

0x00-彩色,I/O=0x3dX;0x11-单色,I/O=0x3bX

0x9000C

2

特性参数

显示卡特性参数

0x90080

16

硬盘参数表

第一个硬盘的参数表

0x90090

16

硬盘参数表

第二个硬盘的参数表

0x901FC

2

根设备号

根文件系统所在的设备号(bootsect.s中设置)

 

然后setup程序将system模块从0x10000-0x8ffff整块向下移动到内存绝对地址0x00000处。接下来加载中断描述符表寄存器(idtr)和全局描述符表寄存器(gdtr),开启A20地址线,重新设置两个中断控制芯片8259A,将硬件中断号重新设置为0x20-0x2f。最后设置CPU的控制寄存器CR0(机器状态字),从而进入32位保护模式进行,并跳转到位于system模块最前面部分的head.s程序继续运行。

2. 执行setup.s程序后内存映像

 

3. 硬盘基本参数表

    在PC机BIOS设定的中断向量表中,int 0x41的中断向量位置(4*0x41 = 0x0000:0x0104)存放的并不是中断程序的地址,而是第一个硬盘的基本参数表。int 0x46中断向量位置存放的是第二个硬盘的基本参数表。

4. A20地址线问题

    为了兼容8088实现回环而设置的专用信号。

flux-setup安装包 保护眼睛必不可缺,在这里给大家分享了,欢迎前来下载 立即下载

相关推荐

task5:在本地搭建大模型(ollama 和 LM studio 对比),接入 openclaw

关于大模型,大家千万不要想着在本地部署,根本不可行,没有那个财力。另外大模型迭代快,不可能每周都在下载大模型。再次,还是国外的模型好用,国内的模型真的在 deepresearch 上就有很大问题,你们懂的。所以本篇文章,还是聚焦在探索层面+实操,并不会实战。

这里是 AI 食用指南,持续分享有用的AI 实操和应用! 1968

ch1_系统启动_setup.S

大写的.s后缀名, 是为了说明是一个16位, 实模式下的汇编语言, 小写的 s 是保护模式下的汇编语言;

chumingqian的博客 624

Visual Studio Installer下载失败的5种修复方法(含DNS修改/补丁安装)

本文针对Visual Studio Installer下载安装文件失败的问题,提供了从网络层到系统层的深度排查与修复指南。详细介绍了DNS修改、代理配置、防火墙设置、系统服务检查等5种核心修复方法,并包含离线安装与手动补丁等替代方案,帮助开发者彻底解决安装难题。

sprite的博客 1610

setup.s 解读——Linux-0.11 剖析笔记(三)

题目:setup.s 解读——Linux-0.11 剖析笔记(三) 更新记录 版本 时间 修订内容 1.0 2018-4-14 增加了“获取显示模式”这一节,AL取值的表格 2.0 2020-6-27 补充了一些内容 本文由 setup.s 分析—— Linux-0.11 学习笔记(二) 修改而来。 文章目录定义符号常量获取一些参数保存在 0x90000 处保存光标的位置获取从 1M 处开始的扩展内存大小获取显示模式检查显示方式(EGA/VGA)并获取参数复制硬盘参数表复制 HD0

车子(chezi) 2598

FT601Q芯片深度解析:从USB3.0引脚定义到FPGA FIFO协议实战选型

本文深入解析FT601Q芯片在USB3.0接口设计与FPGA协议栈开发中的应用,详细介绍了USB3.0引脚定义、FT601Q芯片架构、245同步FIFO模式及硬件设计要点,帮助工程师实现高速数据传输系统。

weixin_30607659的博客 447

硅光芯片边耦合器综述(一)

摘要:硅光子学在过去几十年间吸引了越来越多的关注,由于其具有诸多优点,如极低的成本、硅的高折射率带来的高集成密度,以及与现有半导体制造工艺的兼容性,被认为是未来日常应用中的一项充满前景的关键技术。在硅光子集成电路中,光互连是一个重要的问题,而在数据中心和光传输系统等应用场景中,光纤到芯片的光互连至关重要。光纤到芯片的光学耦合主要分为两大类:面外耦合(off-plane coupling)和面内耦合(in-plane coupling)。光栅耦合器属于前者,而边耦合器则属于面内耦合。本文主要关注硅光子集成电路

jhbfsoagoodgio的博客 5036

setup.s的流程

II、实模式下的初始化   实模式下的初始化,主要是指从内核引导成功后,到进入保护模式之前系统所做的一些处理。在内核源码中对应的程序是 /Arch/i386/boot/setup.S;以下部分主要是针对此文件进行的分析。这部分的分析主要是要弄懂它的处理流程和INITSEG(9000:0000)段参数表的建立,此参数表包含了很多硬件参数,这些都是以后进行保护模式下初始化,以及核心建立的基础。 1.

人类的进步 1004

昇腾NPU实战:PaddleSpeech语音模型高效部署与性能优化指南

本文详细介绍了如何在华为昇腾NPU上高效部署PaddleSpeech语音识别模型。通过使用官方Docker镜像、解决依赖冲突、修改源码适配NPU算子,并应用混合精度与批处理等优化技巧,实现模型在昇腾平台上的稳定运行与性能提升,为AI语音应用提供高性价比的国产硬件部署方案。

weixin_29214691的博客 181

【操作系统系列】Linux 系统启动:bootsect.s、setup.s

系统启动 总体启动过程: (1)BIOS 读入了操作系统的第一个扇区 bootsect.s 文件,然后执行 bootsect.s 执行; (2)bootsect.s 又读入了操作系统的 setup.s 文件,将来交给 setup.s 执行,在其中会完成一些操作系统设置工作; (3)接下来 bootsect.s 还要读入操作系统的主体模块 system 模块,在setup.s 执行完成以后到 system 执行中。 在计算机加电以后,硬件电路会初始化设置PC 寄存器的值。 对于 IBM PC 而言,这个

菜鸡也有大佬梦 2852

2025秋招LLM大模型多模态面试题(八)- langchain完整面试题

1. **什么是 LangChain** 2. **LangChain 包含哪些核心模块** - 模型输入/输出(Model I/O) - 组件管理 - 数据处理 - 链式组合 - 记忆与上下文管理 - 外部集成 3. **一些核心概念** 4. **什么是 LangChain Agent?** 5. **什么是 LangChain model?** 6. **LangChain 包含哪些特点?** 7. **LangChain 如何使用?** - LangChai

weixin_41496173的博客 2191

YOLOv11改进策略【损失函数篇】| arXiv2025 TeLU双曲正切指数线性单元 强梯度防消失 + 解析光滑稳训练,极速提升收敛与泛化

本文记录的是。TeLU(Hyperbolic Tangent Exponential Linear Unit)通过。本文利用TeLU激活函数,以x⋅tanhex统一实现正区间强梯度加速收敛与负区间持续梯度避免死神经元,全程保持解析光滑与极低计算开销,,显著提升深度网络在分类、检测、分割、时序任务中的收敛速度、精度与泛化鲁棒性。

Limiiiing的博客 224

liyux中bootsect.s文件(0.01 kernel)

<br />    PC机加电ROM BIOS自检后,引导扇区(包含bootsect)由BIOS加载到内存0x7C00处,然后将自己移动到内存0x90000处。然后将setup模块(由setup.s编译成)从磁盘加载到内存,紧接着bootsect的后面位置(0x90200),然后利用BIOS中断0x13取磁盘参数表中当前启动引导盘的参数,接着在屏幕上显示"Loading system..."字符串,再将system模块从磁盘加载到内存0x10000开始的地方。随后确定根文件系统的设备号,若没有指定,则根据所

随缘,随心 586

24届数字IC验证——SV+UVM基础知识汇总(一)

汇总整理在面试过程中常见的问题,如果都能回答下来,那么面试肯定不成问题的分别构建不同抽象级的transaction,来实现复杂的激励。(以前是单一层次的sequence,对激励复用、上层复用不塌友好)不同层级之间的sequence没有继承关系,相互之间进行转换低层次的sequence从高层次的sequencer中获取高层次的sequence,并将其转换为低层次的sequence,再通过低层次的sequencer发送出去如何连接:低层次的sequencer包含高层次sequencer的句柄。

qq_42135020的博客 3145

linux011中setup.s文件分析

INITSEG = 0x9000 !原来bootsect所在的段 SYSSEG = 0x1000 !system所在的段 SETUPSEG= 0x9020 !setup所在的段 .globl begtext,begdata,begbss,endtext,enddata,endbss .text begtext: .data begdata: .bss begbss: .text entry

行善之人必有余庆 655

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

setup.S分析

start: jmp trampoline 跳转到tramoline处 trampoline: call start_of_setup .align 16 # The offset at this point is 0x240 ...

chengbeng1745的博客 1585

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

openwrt设置网络失败后的处理

在使用openwrt过程中,往往碰到设置网络失败的问题。笔者每次都是进入fail

随缘,随心 1万+

openwrt检查需要挂载的u盘的文件系统

在openwrt下检查u盘的文件系统需要先将upa

随缘,随心 9005

openwrt disable serial console message when booting

在openwrt启动过程中,向串口的输出主要有四个部分(如下所示):U-Boot 的输出,kernel的输出,文件系统启动过程中的输出(也是kernel输出的一部分,但是打印语句在系统的配置文件中),系统输出。 U-Boot 1.1.4 (Aug 27 2011 - 10:39:39) > AP121-2MB (ar9330) U-boot > DRAM: 32 MB led turning

随缘,随心 8862

debian中gcc安装

<br />debian在安装后以后是没有gcc的。<br /> <br />apt-get install build-essential  这个命令最方便,把所有要安装的全部安装好:build-essential是c语言的开发包,包含了gcc make gdb和libc函数库很多工具。

随缘,随心 8841

openwrt中使用sqlite

第一种方式:在openwrt编程中使用到sqlite时,需要使用sqlite的静态库libsqlite3.a文件。 第二种方式:从sqlite3代码中拷贝出sqlite3.c和sqlite3.h到当前源码目录下,修改sqlite3.c中第22773行的代码(去掉叹号)  22773:#if !defined(HAVE_POSIX_FALLOCATE) \  22774:&& (_

随缘,随心 6573

debian6编译openwrt过程

1. 安装编译OpenWrt需 用到的软件包: sudo apt-get install g++ libncurses5-dev zlib1g-dev bison flex unzip autoconf gawk unzip make gettext gcc binutils patch asciidoc bzip2 libz-dev libc6-dev linux-headers-2.6.32

随缘,随心 6023

mac,Win7操作系统,硬盘安装Debian 6

在win7下将win7系统盘设置为活动分区,否则不行。1、打开命令行提示符,运行DISKPART,运行入提示符变成“DISKPART>”。 2、使用“LIST DISK”命令确定你的移动硬盘的##号。 3、使用“SELECT DISK ##”将你的磁盘设置成当前操作磁盘。 4、使用“SELECT PARTITION ##”将第一个分区设置成当前的操作分区。 5、使用“ACTIVE”命令设置当前分区为活动磁盘。 硬盘安装debian61.下载grub4dos2.解压grldr.mbr,grldr,menu.l

随缘,随心 4885

openwrt中horst的编译问题

编译horst时出现curses.h: is not file or directory。 解决方法: 1)用svn获取源码 svn export svn://svn.openwrt.org/openwrt/trunk/package/ncurses package/ncurses 2)编译代码 make package/ncurses/compile 3)编译horst 在sdk根

随缘,随心 1578

linux操作系统原理与应用--读书笔记(1)

1。在80386中的段寄存器(16位)存放的不是段的基地址,而是某个段的选择符(selector),因为16位的寄存器无法存放32位的段基地址,段基地址存放在描述符表(descriptor table)中。2。控制寄存器:  CR0主要使用PG(31位,分页允许位)和PE(0位,保护允许位);  CR1未定义;  CR2页故障线性地址寄存器,保存最后一次出现缺页的全32位线性地址;  CR3页目录基址寄存器,保存页目录的物理地址,页目录总是存放在以4kb为单位

随缘,随心 993

unix----文件I/O

1. open函数    #include     int open(const char *pathname, int oflag, .../* mode_t mode*/);    返回值:成功返回文件描述符,出错返回-1    oflag参数:    O_RDONLY 只读打开    O_WRONLY 只写打开    O_RDWR 读写打开    (这三个常量有且只能指定一个,以下常量可选)    O_APPEND 追加写    O_CREAT 若文件不存在就创建,需要第三个参数mode,这个的具体设

随缘,随心 731
上一篇: 今日e语-7月6日
下一篇: 7月10号(今日e语)
骑行的蜗牛
博客等级 码龄21年 107粉丝 86原创
评论 2
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值