精华内容
下载资源
问答
  • lerouter_lba-047-ch_art.bin

    2020-02-10 08:27:24
    乐视路由器/lba-047-ch/qca9531/art备份,breed备份出来的。更换flash或者art丢失可刷入使用。
  • 考虑实际的网络构建过程中由于成本限制,节点的最大度都是有限的,因此本文在BA无标度网络模型生长规则的基础上提出最大度受限的BA网络模型――LBA网络模型。并进一步研究最大度限制K不同取值下,LBA网络的平均路径...
  • MBR-LBA48位资料

    2021-04-27 09:10:00
    操作系统基础,可以编译成bin文件,直接写入MBR,也可以作为写入MBR的工具
  • Nand Flash中的ONFI,LBA,Unique ID
  • 有时在对故障硬盘进行砍头操作后其LBA值无变化,且通过参数修改功能也无法修改LBA值,针对这种情况就可以使用修改模块的方法来修改硬盘LBA值。下面以西数黑盘为例讲解具体的操作方法,其MDL为WD800BB-00JHC0、SN号为...
  • 采用具有Lévy飞行特征的蝙蝠算法优化BP神经网络(LBA-BP)进行了富水性预测的仿真测试和现场试验。在仿真测试中,为接近实际情况,在数值模拟结果中加入了不同程度的噪声,对比测试结果发现尽管预测误差随噪声的增大...
  • 安装LBA过程

    2014-02-06 18:27:20
    安装LBA过程,这里有详细的说明方法,值得你拥有
  • 读取磁盘:LBA方式 以及 CHS方式

    千次阅读 2019-10-19 19:29:25
    LBA简介 磁盘读取发展 IO操作读取硬盘的三种方式: chs方式 :小于8G (8064MB) ... LBA28方式:小于137GB ... LBA48方式:小于144,000,...LBA方式访问使用了data寄存器,LBA寄存器(总共3个),device寄存器,comma...

    https://www.cnblogs.com/mlzrq/p/10223060.html

    LBA简介

    磁盘读取发展

    IO操作读取硬盘的三种方式:

    • chs方式 :小于8G (8064MB)

    • LBA28方式:小于137GB

    • LBA48方式:小于144,000,000 GB

    LBA方式访问使用了data寄存器,LBA寄存器(总共3个),device寄存器,command寄存器来完成的。

    LBA28和LBA48方式:
    LBA28方式使用28位来描述一个扇区地址,最大支持128GB的硬磁盘容量。

    LBA28的寄存器

    寄存器端口作用
    data寄存器0x1F0已经读取或写入的数据,大小为两个字节(16位数据)
    每次读取1个word,反复循环,直到读完所有数据
    features寄存器0x1F1读取时的错误信息
    写入时的额外参数
    sector count寄存器0x1F2指定读取或写入的扇区数
    LBA low寄存器0x1F3lba地址的低8位
    LBA mid寄存器0x1F4lba地址的中8位
    LBA high寄存器0x1F5lba地址的高8位
    device寄存器0x1F6lba地址的前4位(占用device寄存器的低4位)
    主盘值为0(占用device寄存器的第5位)
    第6位值为1
    LBA模式为1,CHS模式为0(占用device寄存器的第7位)
    第8位值为1
    command寄存器0x1F7读取,写入的命令,返回磁盘状态
    1 读取扇区:0x20 写入扇区:0x30
    磁盘识别:0xEC

    IDE通道1,读写0x1f0-0x1f7号端口

    IDE通道2,读写0x170-0x17f号端口

    CHS方式:

    写0x1f1: 0

    写0x1f2: 要读的扇区数

    写0x1f3: 扇区号W

    写0x1f4: 柱面的低8位

    写0x1f5: 柱面的高8位

    写0x1f6: 7~5位,101,第4位0表示主盘,1表示从盘,3~0位,磁头号

    写0x1f7: 0x20为读, 0x30为写

    读0x1f7: 第4位为0表示读写完成,否则要一直循环等待

    读0x1f0: 每次读取1个word,反复循环,直到读完所有数据

    24-bit LBA方式:

    写0x1f1: 0

    写0x1f2: 要读的扇区数

    写0x1f3: LBA参数的0~7位

    写0x1f4: LBA参数的8~15位

    写0x1f5: LBA参数的16~23位

    写0x1f6: 7~5位,111,第4位0表示主盘,1表示从盘,3~0位,LBA参数的24~27位

    写0x1f7: 0x20为读, 0x30为写

    读0x1f7: 第4位为0表示读写完成,否则要一直循环等待

    读0x1f0: 每次读取1个word,反复循环,直到读完所有数据

    48-bit LBA方式:

    写两次0x1f1端口: 0

    写两次0x1f2端口: 第一次要读的扇区数的高8位,第二次低8位

    写0x1f3: LBA参数的24~31位

    写0x1f3: LBA参数的0~7位

    写0x1f4: LBA参数的32~39位

    写0x1f4: LBA参数的8~15位

    写0x1f5: LBA参数的40~47位

    写0x1f5: LBA参数的16~23位

    写0x1f6: 7~5位,010,第4位0表示主盘,1表示从盘,3~0位,0

    写0x1f7: 0x24为读, 0x34为写

    LBA和CHS的的对应关系

    虽然LBA和CHS的两种定位方式不同,但其实两者间还是有一个转换关系的。

    读取硬盘

     

    1)sector count寄存器寄存器写入读取的扇区数
    2)LBA low寄存器,LBA mid寄存器,LBA high寄存器写入lba地址
    3)device寄存器写入lba地址和读取模式
    4)command寄存器写入写入命令
    5)读取两个字节数据,多次循环直到读取完扇区数据。

    代码

    boot.asm
    引导文件,初始化屏幕后,读取硬盘并加载4个扇区到内存位置[0x90000]处。然后跳转到0x90000处执行指令。

    ;Rats OS
    ;Tab=4
    [bits 16]
    
        org     0x7c00              ;指明程序的偏移的基地址
    
    ;----------- loader const ------------------
    LOADER_SECTOR_LBA       equ 0x1     ;第2个逻辑扇区开始
    LOADER_SECTOR_COUNT     equ 9       ;读取9个扇区
    LOADER_BASE_ADDR        equ 0x9000  ;内存地址0x9000
    ;-------------------------------------------
    
    ;引导扇区代码 
        jmp     Entry
        db      0x90
        db      "RATSBOOT"          ;启动区的名称可以是任意的字符串(8字节)    
    
    ;程序核心内容
    Entry:
    
        ;------------------
        ;初始化寄存器
        mov ax,0                
        mov ss,ax
        mov ds,ax
        mov es,ax
        mov ss,ax
        mov fs,ax
        mov gs,ax
        mov sp,0x7c00
    
        ;------------------
        ;清屏
        mov ah,0x06             ;清除屏幕                   
        mov al,0
        mov cx,0   
        mov dx,0xffff  
        mov bh,0x17             ;属性为蓝底白字
        int 0x10
        
    
        mov ah,0x02             ;光标位置初始化
        mov dx,0
        mov bh,0
        mov dh,0x0
        mov dl,0x0
        int 0x10
    
        ;------------------
        ;读取硬盘1-10扇区
        mov ebx,LOADER_SECTOR_LBA       ;LBA扇区号
        mov cx,LOADER_SECTOR_COUNT      ;读取扇区数
        mov di,LOADER_BASE_ADDR         ;写入内存地址
        call Func_ReadLBA16
        
        jmp LOADER_BASE_ADDR
    
    ; ------------------------------------------------------------------------
    ; 读取磁盘:Func_ReadLBA16
    ; 参数:
    ; ebx 扇区逻辑号
    ; cx 读入的扇区数,8位
    ; di 读取后的写入内存地址
    ; ------------------------------------------------------------------------  
    Func_ReadLBA16:
        ;设置读取的扇区数
        mov al,cl
        mov dx,0x1F2
        out dx,al
        
        ;设置lba地址
        ;设置低8位
        mov al,bl
        mov dx,0x1F3
        out dx,al
        
        ;设置中8位
        shr ebx,8
        mov al,bl
        mov dx,0x1F4
        out dx,al
        
        ;设置高8位
        shr ebx,8
        mov al,bl
        mov dx,0x1F5
        out dx,al
        
        ;设置高4位和device
        shr ebx,8
        and bl,0x0F
        or bl,0xE0
        mov al,bl
        mov dx,0x1F6
        out dx,al
            
        ;设置commond
        mov al,0x20
        mov dx,0x1F7
        out dx,al
    
    .check_status:;检查磁盘状态
        nop
        in al,dx
        and al,0x88         ;第4位为1表示硬盘准备好数据传输,第7位为1表示硬盘忙
        cmp al,0x08
        jnz .check_status   ;磁盘数据没准备好,继续循环检查
        
    
            
        ;设置循环次数到cx
        mov ax,cx           ;乘法ax存放目标操作数
        mov dx,256
        mul dx
        mov cx,ax           ;循环次数 = 扇区数 x 512 / 2 
        mov bx,di
        mov dx,0x1F0
        
    .read_data:                 
        in ax,dx            ;读取数据
        mov [bx],ax         ;复制数据到内存
        add bx,2            ;读取完成,内存地址后移2个字节
        
        loop .read_data
        ret
    
    
    FillSector:
        resb    510-($-$$)          ;处理当前行$至结束(1FE)的填充
        db      0x55, 0xaa

    loader.asm
    被引导扇区加载到0x90000位置,执行输出hello in loader文字

    ;Rats OS
    ;Tab=4
    [bits 16]
    
    section loader vstart=LOADER_BASE_ADDR ;指明程序的偏移的基地址
    
    ;----------- loader const ------------------
    LOADER_BASE_ADDR        equ 0x9000  ;内存地址0x9000
    ;---------------------------------------    
        jmp Entry
        
    ;程序核心内容
    Entry:
        
    
        ;---------------------------
        ;输出字符串
        mov si,HelloMsg         ;将HelloMsg的地址放入si
        mov dh,0                ;设置显示行
        mov dl,0                ;设置显示列
        call Func_Sprint            ;调用函数
    
        
        jmp $           ;让CPU挂起,等待指令
    
    
            
    ; ------------------------------------------------------------------------
    ; 显示字符串函数:Func_Sprint
    ; 参数:
    ; si = 字符串开始地址,
    ; dh = 第N行,0开始
    ; dl = 第N列,0开始
    ; ------------------------------------------------------------------------
    Func_Sprint:
                mov cx,0            ;BIOS中断参数:显示字符串长度
                mov bx,si
        .len:;获取字符串长度
                mov al,[bx]         ;读取1个字节到al
                inc bx              ;读取下个字节
                cmp al,0            ;是否以0结束
                je .sprint
                inc cx              ;计数器
                jmp .len
        .sprint:;显示字符串
                mov bx,si
                mov bp,bx
                mov bx,ds
                mov es,bx           ;BIOS中断参数:计算[ES:BP]为显示字符串开始地址
    
                mov ah,0x13         ;BIOS中断参数:中断模式
                mov al,0x01         ;BIOS中断参数:输出方式
                mov bh,0x0          ;BIOS中断参数:指定分页为0
                mov bl,0x1F         ;BIOS中断参数:显示属性,指定白色文字           
                int 0x10            ;调用BIOS中断操作显卡。输出字符串
                ret
    ; ------------------------------------------------------------------------
    ;准备显示字符串
    HelloMsg: db "hello in loader!",0
        times   512-($-$$) db  0 ; 处理当前行$至结束(1FE)的填充    

    运行

    创建Makefile文件,并执行make命令

    # tools
    PLATFORM=Linux
    NASM=nasm
    QEMU=qemu-system-x86_64
    QEMU-IMG=qemu-img
    BOCHS=bochs
    BX-IMG=bximage
    
    # args
    boot=boot
    build=build
    
    target: prepare img  
        $(BOCHS) -f bochsrc.me
    
    
    img: $(build)/ratsos.img    
        @echo "build img completed"
    
    $(build)/ratsos.img:$(build)/boot.bin $(build)/loader.bin 
        $(BX-IMG) -hd -mode=flat -size=32 -q $(build)/ratsos.img
        sleep 1
        dd if=$(build)/boot.bin of=$(build)/ratsos.img bs=512 count=1  conv=notrunc
        dd if=$(build)/loader.bin of=$(build)/ratsos.img bs=512 count=1 seek=1 conv=notrunc
    
    $(build)/%.bin: $(boot)/%.asm
        $(NASM) -f bin -o $(build)/$*.bin $(boot)/$*.asm    
    
    prepare: $(build)
        @echo "prepare dir $(build)"
        ifeq ($(build), $(wildcard $(build)))
            @echo "build directory exist..."
        else
            mkdir -p $(build)
        endif
    
    clean:
        @echo "clean dir $(build)"
        rm -rf $(build)/*
    
    platform:
        @echo $(PLATFORM)
    

    运行结果

     

    展开全文
  • LBA定址方式

    2021-03-12 16:50:34
    LBA全称是Logic Block Address(逻辑块地址),又叫线性寻址,我们可以把以扇区为单位,从0开始编号,即第一个扇区是0号扇区,第二个扇区为1号扇区依次类推.有了LBA定址方式我们可以很方便的定位到想要看的扇区号.我们可以...

    LBA全称是Logic Block Address(逻辑块地址),又叫线性寻址,我们可以把以扇区为单位,从0开始编号,即第一个扇区是0号扇区,第二个扇区为1号扇区依次类推.有了LBA定址方式我们可以很方便的定位到想要看的扇区号.我们可以简单的认为每个扇区都是紧挨着的,每个扇区都有自己的LBA扇区编号. 在数据恢复过程中都是采用LBA寻址方式例如在分区表中看到一个分区的起始扇区号是264192,为了验证这个分区DBR是否正确,可以用winhex跳转到264192扇区
    在这里插入图片描述

    看到264192扇区是一个NTFS的DBR,初步判断DBR是正常的
    在这里插入图片描述

    展开全文
  • 读取磁盘:LBA方式

    2019-01-04 23:41:00
    LBA简介 磁盘读取发展 IO操作读取硬盘的三种方式: chs方式 :小于8G (8064MB) LBA28方式:小于137GB LBA48方式:小于144,000,000 GB LBA方式访问使用了data寄存器,LBA寄存器(总共3个),device寄存器,command...

    LBA简介

    磁盘读取发展

    IO操作读取硬盘的三种方式:

    • chs方式 :小于8G (8064MB)

    • LBA28方式:小于137GB

    • LBA48方式:小于144,000,000 GB

    LBA方式访问使用了data寄存器,LBA寄存器(总共3个),device寄存器,command寄存器来完成的。

    LBA28和LBA48方式:
    LBA28方式使用28位来描述一个扇区地址,最大支持128GB的硬磁盘容量。

    LBA28的寄存器

    寄存器端口作用
    data寄存器0x1F0已经读取或写入的数据,大小为两个字节(16位数据)
    每次读取1个word,反复循环,直到读完所有数据
    features寄存器0x1F1读取时的错误信息
    写入时的额外参数
    sector count寄存器0x1F2指定读取或写入的扇区数
    LBA low寄存器0x1F3lba地址的低8位
    LBA mid寄存器0x1F4lba地址的中8位
    LBA high寄存器0x1F5lba地址的高8位
    device寄存器0x1F6lba地址的前4位(占用device寄存器的低4位)
    主盘值为0(占用device寄存器的第5位)
    第6位值为1
    LBA模式为1,CHS模式为0(占用device寄存器的第7位)
    第8位值为1
    command寄存器0x1F7读取,写入的命令,返回磁盘状态
    1 读取扇区:0x20 写入扇区:0x30
    磁盘识别:0xEC

    IDE通道1,读写0x1f0-0x1f7号端口

    IDE通道2,读写0x170-0x17f号端口

    CHS方式:

    写0x1f1: 0

    写0x1f2: 要读的扇区数

    写0x1f3: 扇区号W

    写0x1f4: 柱面的低8位

    写0x1f5: 柱面的高8位

    写0x1f6: 7~5位,101,第4位0表示主盘,1表示从盘,3~0位,磁头号

    写0x1f7: 0x20为读, 0x30为写

    读0x1f7: 第4位为0表示读写完成,否则要一直循环等待

    读0x1f0: 每次读取1个word,反复循环,直到读完所有数据

    24-bit LBA方式:

    写0x1f1: 0

    写0x1f2: 要读的扇区数

    写0x1f3: LBA参数的0~7位

    写0x1f4: LBA参数的8~15位

    写0x1f5: LBA参数的16~23位

    写0x1f6: 7~5位,111,第4位0表示主盘,1表示从盘,3~0位,LBA参数的24~27位

    写0x1f7: 0x20为读, 0x30为写

    读0x1f7: 第4位为0表示读写完成,否则要一直循环等待

    读0x1f0: 每次读取1个word,反复循环,直到读完所有数据

    48-bit LBA方式:

    写两次0x1f1端口: 0

    写两次0x1f2端口: 第一次要读的扇区数的高8位,第二次低8位

    写0x1f3: LBA参数的24~31位

    写0x1f3: LBA参数的0~7位

    写0x1f4: LBA参数的32~39位

    写0x1f4: LBA参数的8~15位

    写0x1f5: LBA参数的40~47位

    写0x1f5: LBA参数的16~23位

    写0x1f6: 7~5位,010,第4位0表示主盘,1表示从盘,3~0位,0

    写0x1f7: 0x24为读, 0x34为写

    LBA和CHS的的对应关系

    虽然LBA和CHS的两种定位方式不同,但其实两者间还是有一个转换关系的。

    读取硬盘

    1)sector count寄存器寄存器写入读取的扇区数
    2)LBA low寄存器,LBA mid寄存器,LBA high寄存器写入lba地址
    3)device寄存器写入lba地址和读取模式
    4)command寄存器写入写入命令
    5)读取两个字节数据,多次循环直到读取完扇区数据。

    代码

    boot.asm
    引导文件,初始化屏幕后,读取硬盘并加载4个扇区到内存位置[0x90000]处。然后跳转到0x90000处执行指令。

    ;Rats OS
    ;Tab=4
    [bits 16]
    
        org     0x7c00              ;指明程序的偏移的基地址
    
    ;----------- loader const ------------------
    LOADER_SECTOR_LBA       equ 0x1     ;第2个逻辑扇区开始
    LOADER_SECTOR_COUNT     equ 9       ;读取9个扇区
    LOADER_BASE_ADDR        equ 0x9000  ;内存地址0x9000
    ;-------------------------------------------
    
    ;引导扇区代码 
        jmp     Entry
        db      0x90
        db      "RATSBOOT"          ;启动区的名称可以是任意的字符串(8字节)    
    
    ;程序核心内容
    Entry:
    
        ;------------------
        ;初始化寄存器
        mov ax,0                
        mov ss,ax
        mov ds,ax
        mov es,ax
        mov ss,ax
        mov fs,ax
        mov gs,ax
        mov sp,0x7c00
    
        ;------------------
        ;清屏
        mov ah,0x06             ;清除屏幕                   
        mov al,0
        mov cx,0   
        mov dx,0xffff  
        mov bh,0x17             ;属性为蓝底白字
        int 0x10
        
    
        mov ah,0x02             ;光标位置初始化
        mov dx,0
        mov bh,0
        mov dh,0x0
        mov dl,0x0
        int 0x10
    
        ;------------------
        ;读取硬盘1-10扇区
        mov ebx,LOADER_SECTOR_LBA       ;LBA扇区号
        mov cx,LOADER_SECTOR_COUNT      ;读取扇区数
        mov di,LOADER_BASE_ADDR         ;写入内存地址
        call Func_ReadLBA16
        
        jmp LOADER_BASE_ADDR
    
    ; ------------------------------------------------------------------------
    ; 读取磁盘:Func_ReadLBA16
    ; 参数:
    ; ebx 扇区逻辑号
    ; cx 读入的扇区数,8位
    ; di 读取后的写入内存地址
    ; ------------------------------------------------------------------------  
    Func_ReadLBA16:
        ;设置读取的扇区数
        mov al,cl
        mov dx,0x1F2
        out dx,al
        
        ;设置lba地址
        ;设置低8位
        mov al,bl
        mov dx,0x1F3
        out dx,al
        
        ;设置中8位
        shr ebx,8
        mov al,bl
        mov dx,0x1F4
        out dx,al
        
        ;设置高8位
        shr ebx,8
        mov al,bl
        mov dx,0x1F5
        out dx,al
        
        ;设置高4位和device
        shr ebx,8
        and bl,0x0F
        or bl,0xE0
        mov al,bl
        mov dx,0x1F6
        out dx,al
            
        ;设置commond
        mov al,0x20
        mov dx,0x1F7
        out dx,al
    
    .check_status:;检查磁盘状态
        nop
        in al,dx
        and al,0x88         ;第4位为1表示硬盘准备好数据传输,第7位为1表示硬盘忙
        cmp al,0x08
        jnz .check_status   ;磁盘数据没准备好,继续循环检查
        
    
            
        ;设置循环次数到cx
        mov ax,cx           ;乘法ax存放目标操作数
        mov dx,256
        mul dx
        mov cx,ax           ;循环次数 = 扇区数 x 512 / 2 
        mov bx,di
        mov dx,0x1F0
        
    .read_data:                 
        in ax,dx            ;读取数据
        mov [bx],ax         ;复制数据到内存
        add bx,2            ;读取完成,内存地址后移2个字节
        
        loop .read_data
        ret
    
    
    FillSector:
        resb    510-($-$$)          ;处理当前行$至结束(1FE)的填充
        db      0x55, 0xaa

    loader.asm
    被引导扇区加载到0x90000位置,执行输出hello in loader文字

    ;Rats OS
    ;Tab=4
    [bits 16]
    
    section loader vstart=LOADER_BASE_ADDR ;指明程序的偏移的基地址
    
    ;----------- loader const ------------------
    LOADER_BASE_ADDR        equ 0x9000  ;内存地址0x9000
    ;---------------------------------------    
        jmp Entry
        
    ;程序核心内容
    Entry:
        
    
        ;---------------------------
        ;输出字符串
        mov si,HelloMsg         ;将HelloMsg的地址放入si
        mov dh,0                ;设置显示行
        mov dl,0                ;设置显示列
        call Func_Sprint            ;调用函数
    
        
        jmp $           ;让CPU挂起,等待指令
    
    
            
    ; ------------------------------------------------------------------------
    ; 显示字符串函数:Func_Sprint
    ; 参数:
    ; si = 字符串开始地址,
    ; dh = 第N行,0开始
    ; dl = 第N列,0开始
    ; ------------------------------------------------------------------------
    Func_Sprint:
                mov cx,0            ;BIOS中断参数:显示字符串长度
                mov bx,si
        .len:;获取字符串长度
                mov al,[bx]         ;读取1个字节到al
                inc bx              ;读取下个字节
                cmp al,0            ;是否以0结束
                je .sprint
                inc cx              ;计数器
                jmp .len
        .sprint:;显示字符串
                mov bx,si
                mov bp,bx
                mov bx,ds
                mov es,bx           ;BIOS中断参数:计算[ES:BP]为显示字符串开始地址
    
                mov ah,0x13         ;BIOS中断参数:中断模式
                mov al,0x01         ;BIOS中断参数:输出方式
                mov bh,0x0          ;BIOS中断参数:指定分页为0
                mov bl,0x1F         ;BIOS中断参数:显示属性,指定白色文字           
                int 0x10            ;调用BIOS中断操作显卡。输出字符串
                ret
    ; ------------------------------------------------------------------------
    ;准备显示字符串
    HelloMsg: db "hello in loader!",0
        times   512-($-$$) db  0 ; 处理当前行$至结束(1FE)的填充    

    运行

    创建Makefile文件,并执行make命令

    # tools
    PLATFORM=Linux
    NASM=nasm
    QEMU=qemu-system-x86_64
    QEMU-IMG=qemu-img
    BOCHS=bochs
    BX-IMG=bximage
    
    # args
    boot=boot
    build=build
    
    target: prepare img  
        $(BOCHS) -f bochsrc.me
    
    
    img: $(build)/ratsos.img    
        @echo "build img completed"
    
    $(build)/ratsos.img:$(build)/boot.bin $(build)/loader.bin 
        $(BX-IMG) -hd -mode=flat -size=32 -q $(build)/ratsos.img
        sleep 1
        dd if=$(build)/boot.bin of=$(build)/ratsos.img bs=512 count=1  conv=notrunc
        dd if=$(build)/loader.bin of=$(build)/ratsos.img bs=512 count=1 seek=1 conv=notrunc
    
    $(build)/%.bin: $(boot)/%.asm
        $(NASM) -f bin -o $(build)/$*.bin $(boot)/$*.asm    
    
    prepare: $(build)
        @echo "prepare dir $(build)"
        ifeq ($(build), $(wildcard $(build)))
            @echo "build directory exist..."
        else
            mkdir -p $(build)
        endif
    
    clean:
        @echo "clean dir $(build)"
        rm -rf $(build)/*
    
    platform:
        @echo $(PLATFORM)
    

    运行结果

    1573351-20190104234117944-2029614451.png

    转载于:https://www.cnblogs.com/mlzrq/p/10223060.html

    展开全文
  • matlab如何敲代码LBA Matlab中用于拟合决策的线性弹道累加器(LBA)模型的工具箱(Brown和Heathcote,2008,Cogn Psychology)。 该代码是从Scott Brown的R代码改编而成的,以适合此处提供的LBA: 该代码需要优化...
  • 硬盘LBA 和CHS的关系

    2020-03-10 13:37:30
    逻辑扇区号LBA的公式: LBA(逻辑扇区号)=磁头数 × 每磁道扇区数 × 当前所在柱面号 + 每磁道扇区数 × 当前所在磁头号 + 当前所在扇区号 – 1 例如:CHS=0/0/1,则根据公式LBA=255 × 63 × 0 + 63 × 0 + 1 – 1=...

    本文参考了: http://www.baidu.com/link?url=0T4Mdb56lOZ7YnQ71heVJy0fjG2mEj5bpRfy0gog-52lTV5EIDJj89wXSLjAqUZipabRBuWv2Cci7NTg6YmaN_&wd=&eqid=871a72060001bfff000000045901b538


    磁头数 × 磁道(柱面)数 × 每道扇区数 × 每扇区字节数

    l         磁头(head)数:每个盘片一般有上下两面,分别对应1个 磁头,共2个 磁头
    l         磁道(track)数:磁道是从盘片外圈往内圈编号0磁道,1磁道...,靠近主轴的同心圆用于停靠 磁头,不存储数据;
    l         柱面(cylinder)数:同磁道数量;
    l         扇区(sector)数:每个磁道都别切分成很多扇形区域,每道的扇区数量相同;
    l         圆盘(platter)数:就是盘片的数量。

    硬盘基本知识:物理构造和逻辑单元


      硬盘基本知识:物理构造和逻辑单元
    硬盘上的数据定位

    每个扇区可存储128×2的N次方(N=0.1.2.3)字节的数据(一般为512B),扇区为数据存储的最小单元,从上图可知,外圈的扇区面积比内圈大,为何存储的数据量相同,这是因为内外圈使用的磁物质密度不同,但现在的硬盘已经采用内外圈同密度物质来存储数据了,以减少类似“大面积小数据”的浪费情况。(此时的内外磁道的扇区数量将不同,具体细节省略)

    有了扇区(sector),有了柱面(cylinder),有了 磁头(head),显然可以定位数据了,这就是数据定位(寻址)方式之一,CHS(也称3D),对早期的磁盘(上图所示)非常有效,知道用哪个 磁头,读取哪个柱面上的第几扇区就OK了。CHS模式支持的硬盘容量有限,用8bit来存储 磁头地址,用10bit来存储柱面地址,用6bit来存储扇区地址,而一个扇区共有512Byte,这样使用CHS寻址一块硬盘最大容量为256 * 1024 * 63 * 512B = 8064 MB(1MB = 1048576B)(若按1MB=1000000B来算就是8.4GB)

    但现在很多硬盘采用同密度盘片,意味着内外磁道上的扇区数量不同,扇区数量增加,容量增加,3D很难定位寻址,新的寻址模式:LBA(Logical Block Addressing)。在LBA地址中,地址不再表示实际硬盘的实际 物理地址(柱面、 磁头和扇区)。LBA编址方式将CHS这种三维寻址方式转变为一维的线性寻址,它把硬盘所有的 物理扇区的C/H/S编号通过一定的规则转变为一线性的编号,系统效率得到大大提高,避免了烦琐的 磁头/柱面/扇区的寻址方式。在访问硬盘时,由硬盘控制器再将这种 逻辑地址转换为实际硬盘的 物理地址。

    LBA下的编号,扇区编号是从0开始。

    逻辑扇区号LBA的公式:

    LBA(逻辑扇区号)=磁头数 × 每磁道扇区数 × 当前所在柱面号 + 每磁道扇区数 × 当前所在磁头号 + 当前所在扇区号 – 1

    例如:CHS=0/0/1,则根据公式LBA=255 × 63 × 0 + 63 × 0 + 1 – 1= 0

    也就是说 物理0柱面0 磁头1扇区,是 逻辑0扇区。

    也就是说  LBA就是扇区的编号,  按照磁道  柱面 和 磁头 从小到大的顺序编号

    •                     <li class="tool-item tool-active is-like "><a href="javascript:;"><svg class="icon" aria-hidden="true">
                              <use xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#csdnc-thumbsup"></use>
                          </svg><span class="name">点赞</span>
                          <span class="count"></span>
                          </a></li>
                          <li class="tool-item tool-active is-collection "><a href="javascript:;" data-report-click="{&quot;mod&quot;:&quot;popu_824&quot;}"><svg class="icon" aria-hidden="true">
                              <use xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#icon-csdnc-Collection-G"></use>
                          </svg><span class="name">收藏</span></a></li>
                          <li class="tool-item tool-active is-share"><a href="javascript:;" data-report-click="{&quot;mod&quot;:&quot;1582594662_002&quot;}"><svg class="icon" aria-hidden="true">
                              <use xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#icon-csdnc-fenxiang"></use>
                          </svg>分享</a></li>
                          <!--打赏开始-->
                                                  <!--打赏结束-->
                                                  <li class="tool-item tool-more">
                              <a>
                              <svg t="1575545411852" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="5717" xmlns:xlink="http://www.w3.org/1999/xlink" width="200" height="200"><defs><style type="text/css"></style></defs><path d="M179.176 499.222m-113.245 0a113.245 113.245 0 1 0 226.49 0 113.245 113.245 0 1 0-226.49 0Z" p-id="5718"></path><path d="M509.684 499.222m-113.245 0a113.245 113.245 0 1 0 226.49 0 113.245 113.245 0 1 0-226.49 0Z" p-id="5719"></path><path d="M846.175 499.222m-113.245 0a113.245 113.245 0 1 0 226.49 0 113.245 113.245 0 1 0-226.49 0Z" p-id="5720"></path></svg>
                              </a>
                              <ul class="more-box">
                                  <li class="item"><a class="article-report">文章举报</a></li>
                              </ul>
                          </li>
                                              </ul>
                  </div>
                              </div>
              <div class="person-messagebox">
                  <div class="left-message"><a href="https://blog.csdn.net/zztan">
                      <img src="https://profile.csdnimg.cn/6/4/5/3_zztan" class="avatar_pic" username="zztan">
                                              <img src="https://g.csdnimg.cn/static/user-reg-year/2x/8.png" class="user-years">
                                      </a></div>
                  <div class="middle-message">
                                          <div class="title"><span class="tit"><a href="https://blog.csdn.net/zztan" data-report-click="{&quot;mod&quot;:&quot;popu_379&quot;}" target="_blank">zztan</a></span>
                                              </div>
                      <div class="text"><span>发布了11 篇原创文章</span> · <span>获赞 1</span> · <span>访问量 2万+</span></div>
                  </div>
                                  <div class="right-message">
                                              <a href="https://im.csdn.net/im/main.html?userName=zztan" target="_blank" class="btn btn-sm btn-red-hollow bt-button personal-letter">私信
                          </a>
                                                              <a class="btn btn-sm  bt-button personal-watch" data-report-click="{&quot;mod&quot;:&quot;popu_379&quot;}">关注</a>
                                      </div>
                              </div>
                      </div>
      
    展开全文
  • 地址包里保存的是64位LBA地址,如果硬盘支持LBA寻址,就把低28位直接传递给ATA界面,如果不支持,操作系统就先把LBA地址转换为CHS地址,再传递给ATA界面。通过这种方式,能实现在ATA总线基础上CHS寻址最大容量是136....
  • 磁盘寻址方式--CHS和LBA寻址方式

    千次阅读 2020-03-30 10:06:46
    什么是CHS寻址 很久以前, 硬盘的容量还非常小的时候,人们采用与软盘类似的结构生产硬盘。... S=(LBA mod NS)+1 例如 LBA = 0 则 CHS = 0/0/1 从C/H/S到LBA的计算公式: LBA=(C-CS)*PH*PS+(H-HS)*PS+(S-SS)
  • 逻辑扇区号LBA的公式: LBA(逻辑扇区号)=磁头数 × 每磁道扇区数 × 当前所在柱面号 + 每磁道扇区数 × 当前所在磁头号 + 当前所在扇区号 – 1 例如:CHS=0/0/1,则根据公式LBA=255 × 63 × 0 + 63 × 0 + 1 – 1=...
  • 硬盘寻址 CHS LBA

    2019-01-13 16:48:56
    近期回顾了下HDD磁盘的...实际情况中LBA总扇区数几乎一定不是 16065的倍数,所以我们用CHS去计算总大小时会比LBA的值稍小一点。范围是在(1~16064) * 512 end. 转载于:https://blog.51cto.com/201438gz/2342190
  • CHS和LBA逻辑块地址

    千次阅读 2019-04-07 17:46:22
    LBA简介 磁盘读取发展 IO操作读取硬盘的三种方式: chs方式 :小于8G (8064MB) LBA28方式:小于137GB LBA48方式:小于144,000,000 GB LBA方式访问使用了data寄存器,LBA寄存器(总共3个),device...
  • LBA

    千次阅读 2013-04-11 17:38:22
    LBA 目录 LBA硬盘模式 硬盘模式 篮球赛事 LBA 编辑本段LBA硬盘模式 LBA(Logical Block Addressing)逻辑块寻址。在 LBA 模式下,我们知道硬盘上的一个数据区域由它所在的磁头、柱面...
  • LBA(Logical Block Addressing)逻辑块寻址模式 人们常说的硬盘参数还是古老的 CHS (Cylinder/Head/Sector)参数。那么为什么要使用这些参数,它们的意义是什么?它们的取值范围是什么? 很久以前(long long ago ...)...
  • LBA2翻拍 一点大冒险2 / Twinsen在JavaScript中重新实现的奥德赛/ Three.js / React (或) 愿景/目标 阶段1:重新实现LBA2游戏引擎 应该看起来和原来一样玩 完全重新设计而不是基于分解的方法 关注代码质量,使其...
  • 计算扇区时需要转换 LBA与C/H/S C/H/S | Cylinder/Head/Sector | 柱面/磁头/扇区 ,是旧式磁盘寻道方式 LBA | Logical Block Address ,是抽象的扇区,可以理解为线性直铺的扇区,从0–max CS表示起始柱面号,HS表示...
  • 各参数仍然按上述假设进行,则从LBA到C/H/S的转换公式为: C=LBA DIV (PH﹡PS)+CS H=(LBA DIV PS)MOD PH+HS S=LBA MOD PS+SS 同样可以带入几个值进行验证: 当LBA=0时,代入公式得C/H/S=0/0/1 当LBA=62时,代入...
  • 磁盘结构作用和工作原理 磁盘结构作用拓扑图 盘面(Platters) 磁盘圆形盘面,一个磁盘内含有多个盘面。 层叠关系,每个盘面之间不会贴着。 第一个盘的正面成为0面,反面为1面;第二个盘正面为2面,反面为3面,...
  • LBA-Linux问世.pdf

    2021-09-07 00:36:46
    LBA-Linux问世.pdf
  • 针对不同的硬件系统,检测结果会出现以下三种: “PASSED”表示BIOS支持48-bit LBA; “FAILED”表示BIOS不支持48-bit LBA; “UNDETERMINED”则表示测试程序不能确定被测BIOS是否具有48-bit LBA能力。遇到这种情况...
  • LBA-sample-源码

    2021-03-21 20:01:25
    Atlp-角形 具有Angular 8和Angular材质的Material Design管理模板 设置开发环境 转到命令中的文件目录并运行:npm install 通过运行以下命令安装angular cli:npm install -g @ angular / cli 如果ng cli命令不起...
  • 概括的说lba用自己的方式虚拟了硬盘中的磁头柱面和扇区,这些数字只能计算出最后大小并不表示实际硬件设备, “LBA(Logical Block Addressing)逻辑块寻址模式。在 LBA 模式下,我们知道硬盘上的一个数据区域由它所在...
  • 逻辑区块寻址(Logical Block Address, LBA)是非常单纯的一种寻址模式﹔从0开始编号来定位区块,第一区块LBA=0,第二区块LBA=1,依此类推。这种定址模式替换了原先操作系统必须面对存储设备硬件构造的方式。最具代表...
  • 在构造nvme cmd命令的时候,使用了request的参数__sector,__data_len来设置nvme命令的lba,len值。 request的参数__sector,__data_len是怎么得到的呢?
  • 利用python获取磁盘分区的起始扇区的LBA以及磁盘大小

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 11,389
精华内容 4,555
关键字:

LBA