2140|0

83

帖子

0

TA的资源

一粒金砂(初级)

楼主
 

向达人请教一个UBOOT(i386)的简单问题~~ [复制链接]

汇编不好,看UBOOT刚启动就困住了,好几天了都还没整明白。 在汇编语言子论坛里发过,但没有什么同学。来这里试试。

================start16.s================
#define BOOT_SEG        0xffff0000        /* linear segment of boot code */
#define a32                .byte 0x67;
#define o32                .byte 0x66;

.section .start16, "ax"
.code16
.globl start16
start16:
        /* First we let the BSP do some early initialization
         * this code have to map the flash to its final position
         */
        mov        $board_init16_ret, %bp
        jmp        board_init16

================sc520_cdp_asm16.s================
/*
* 16bit initialization code.
* This code have to map the area of the boot flash
* that is used by U-boot to its final destination.
*/

.text
.section .start16, "ax"
.code16
.globl board_init16
board_init16:
        /* Alias MMCR to 0xdf000 */
        movw        $0xfffc, %dx
        movl        $0x800df0cb, %eax       
        outl        %eax, %dx                <-----MMCR是一个4K字节的区域,里面包含了很多重要的寄存器。MMCR默认是在0xfffef000-0xfffeffff,软件可以对这个区域进行映射。这里将MMCR映射到0xdf000
       
        /* Set ds to point to MMCR alias */
        movw        $0xdf00, %ax               
        movw        %ax, %ds                 <-----DS段寄存器指向0xdf000(映射后的MMCR起始地址)
               
        /* Map the entire flash at 0x38000000  
         * (with BOOTCS and PAR14, use 0xabfff800 for ROMCS1) */
        movl    $0xc0, %edi
        movl        $0x8bfff800, %eax
        movl        %eax, (%di)    <------这里应该是想将MMCR中偏移地址0xc0的寄存器赋值为0x8bfff800。前面将DS赋了值,但并没有看见对ES的赋值操作。用DI就指飞了~~ 印象中EDI是配合ES使用的吧。

1. 芯片手册中描述,ES的默认值是不确定的(Undefined)。
2. 芯片手册中描述,EDI/DI只能配合ES使用。The DI register can only point to operands in the
memory space specified by the ES segment register.
3. 好几个版本的U-BOOT代码都是这样。
   

还望达人指点,多谢了~~
点赞 关注

回复
举报
您需要登录后才可以回帖 登录 | 注册

查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/7 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表