mips cpu中空间地址是怎么划分的?如在uboot中如何操作设备的特定的mips32 寄存器器

君,已阅读到文档的结尾了呢~~
U Boot代码分析,CPU是MIPS架构的1 史前时代:汇编在FLASH中运行的日子 汇编指令参见《See MIPS Run》一书 :U Boot的开始执行始于用汇编语言编写的CPU依赖的程序,程序是从cpu mips start S文件中的 start代码段开始执行的。由于此时DRAM未初始化,所以程序是从存储U Boot程序的FLASH中开始运行的。下面就从 start开始代码之旅。
程序一开始就出现了一大片令人迷惑的代码: start:RVECENT reset 0
U..
扫扫二维码,随身浏览文档
手机或平板扫扫即可继续访问
U Boot启动代码分析 MIPS
举报该文档为侵权文档。
举报该文档含有违规或不良信息。
反馈该文档无法正常浏览。
举报该文档为重复文档。
推荐理由:
将文档分享至:
分享完整地址
文档地址:
粘贴到BBS或博客
flash地址:
支持嵌入FLASH地址的网站使用
html代码:
&embed src='/DocinViewer-4.swf' width='100%' height='600' type=application/x-shockwave-flash ALLOWFULLSCREEN='true' ALLOWSCRIPTACCESS='always'&&/embed&
450px*300px480px*400px650px*490px
支持嵌入HTML代码的网站使用
您的内容已经提交成功
您所提交的内容需要审核后才能发布,请您等待!
3秒自动关闭窗口MIPS架构UBOOT和Linux参数传递
base projcet:dgn1000cpu:amazon_se一:in uboot1. 传给内核参数的地址:首先设置参数存放在内存中的地址:in file:lib_mips/board.c&&& addr_sp -= CFG_BOOTPARAMS_LEN;&&& bd-&bi_boot_params = addr_//& bd-&bi_boot_params = 0x;参数bd-&bi_boot_params默认时可以从uboot的前面,这个参数我们是可以改的,我要把传给kernel的参数放到0x的地方,直接把上面的改成: bd-&bi_boot_params = 0x;就可以了。 2. 把要传给内核的参数写到相应的地址上in file:lib_mips/mips_linux.c在uboot的执行的最后一句话为:theKernel (linux_argc, linux_argv, linux_env, 0);其中: linux_argc:环境变量bootargv中的包含参数的个数加1。linux_argv:就是环境变量。linux_env: 其他一些必要的参数。最后一个参数0: 暂时是没有使用的。如果:dgn1000的 bootargv= root=/dev/mtdblock4 ip=192.168.1.1:12.168.1.2::::eth0:on console=ttyS0, 115200 eth=00:c0:02:11:22:33 mem=16M panic=1(注:在这里每两个空格之间成为一个参数,如mem=16M)这里的linux_argc=7。前面0x400个字节是用于存放每个参数的起始位置,是一个指针,每个指针占四个字节,所以最多可以存放256个参数。从0x开始存放参数,每个参数都是一“0”结束,红色所示。linux_env是用于存放其他一些必要的参数,如"memsize", "initrd_start","flash_size"等,linux_env的地址在linux_argv的下面,位置关系为: linux_env = (char **) (((ulong) argp + 15) & ~15);&& //argp指向linux_argv的末尾。存放规则和linux_env是一样的,最多也只能存放256个参数。theKernel的第四个参数,暂时没有起任何作用,我感觉这个参数是起到扩展作用的,如果要传递自己定义的参数,可以按照linux_argv的规则添加。 二:in kernel:1. 在kernel中会从arch/mips/kernel/head.S中的kernel_entry开始执行:在函数kernel_entry中有这么一段程序: &&&& LONG_S&&&&& a0, fw_arg0&&&& # firmware arguments&&& LONG_S&&&&& a1, fw_arg1&&& LONG_S&&&&& a2, fw_arg2&&& LONG_S&&&&& a3, fw_arg3(在"include/asm-mips/asm.h"中定义:#define LONG_S sw)在mips架构中,寄存器a0,a1,a2,a3是用于子函数调用传递给子函数参数的,所以fw_arg0=linux_argc,fw_arg1=linux_argv,fw_arg2=linux_env,fw_arg3=02. 在函数void __init prom_init(void)中会读取fw_arg0等从uboot传递给kernel的参数。in file "arch/mips/infineon/amazon_se/basic/prom.c" start_kernel-&setup_arch(&command_line)-&prom_init().
更多相关文章
Linux kernel在V 2.6之后,modules的编译有些修改.不再是单独编译,而是将本module添加入:obj-m,并最终调用Linux Kernel Makefile 来编译modules.任务一:这次Sam需要在某一平台上编译Bluetooth driver.其实也就是BlueZ的K ...
Intel全资子公司风河系统公司(Wind River)日前宣布,风河Wind River Linux 3.0将全面支持Linux基金会(Linux Foundation)面向MIPS基础架构的电信级Linux(CGL)4.0规范,从而充分满足进入电信和高端数据网络通讯市场的关键必要条件,其中所支持 ...
经过Fedora 中文用户组的开发者们的努力, Fedora 向 MIPS 架构的移植已经取得初步进展,希望对于 MIPS 平台嵌入式开发感兴趣的朋友一起加入进来.该项目有两个主要目的:一是和 ARM 平台一样成为 Fedora 第二平台架构的组成部分:二是构建以 Fedora 为基础的生态圈,提供 ...
imx芯片启动和烧录根据选择的启动模式,到相应的接口引导.imx芯片自带一个声称stream boot的工具,能够生成两种stream,分别是直接启动linux的stream和直接启动boot的两种工具.我们根据原厂给的源码包,编译好uboot和Linux的zImage之后.如果我们直接启动linu ...
&制作文件系统之五:基于BusyBox的默认配置来构建文件系统&所用的u-boot和Linux内核镜像(适用于优龙FS2410)以及制作好的文件系统(适用于ARM体系结构).具体见 /Linux/78p5.htm免费下载 ...
bootm 0xx240000 (其中:0x100000是Linux内核在flash中的地址,0x240000是initrd在flash中的地址)setenv bootargs console=ttyS0, root=/dev/ram rw mem=32M当u-boo ...
在打造新一代数据中心的过程中,把应用系统从昂贵.封闭的UNIX平台迁移到经济.灵活的Linux平台(简称为U2L),一直是近年来优化IT架构.推进IT变革的一项重要举措.时至今日,随着X86技术的成熟,随着虚拟化.并行计算及云计算的普及,随着节能减排呼声的高涨,以及随着戴尔.英特尔.红帽和VMwar ...
曾几何时x86是Linux厂商红帽所关心的唯一主要芯片架构.这已成为历史,因为现在这个Linux巨头正在认真考量ARM. &ARM越来越有前景&,红帽Linux副总裁Tim Burke在一次采访中这样告诉ServerWatch,&我们关注的是服务器市场中的ARM,所以我 ...
Android开发,ViewPager,ScrollView,嵌套滚动最里面的ViewPager水平滚动时总是会触发最外层的ViewPager滚动,需要自定义ViewPager.import android.cont ...
ping IP地址最常见的就是查看网络一个个IP网络状态了,当然有时我们希望查看网站的IP ...
在天天酷跑的这一款游戏里面,刷双人188场怎么玩,有没有什么好方法是可以快速获胜的呢?对于 ...
开了Oracle数据库这门课,课本和老师讲课均用的10g,但是Oracle 11g发布已久 ...
近期各大品牌纷纷推出以游戏为主导功能的MP4播放器,而AOCOS奥可视也将推出一款GX ...
[Nagios监控]监控Samba服务1& 监控端设置a& 下载监控脚本cd
Infinispan 7.2.0 Final 发布下载,此版本主要有以下更新:Bug 修复 ...
TIOBE 在12月8日发布了12月份的编程语言排行榜.同时也只有一个月时间来发布年度编程 ...
docker repositories:https://registry.hub.dock ...
根据Valve今年二月的硬件软件调查,在Steam用户中,Linux已占到了约2%,比上个 ...博客访问: 50663
博文数量: 67
博客积分: 0
博客等级: 民兵
技术积分: 22
注册时间:
认证徽章:
一入程序深似海,从此妹子成路人
IT168企业级官微
微信号:IT168qiye
系统架构师大会
微信号:SACC2013
分类: 嵌入式
原文地址: 作者:
原文地址:http://blog.csdn.net/suiyuan/article/details/
一看就知道,找工作用的,主要想从事驱动方面的开发工作,当然追求linux的道路还很漫长,先说说面试,面试了4家跟驱动相关的公司,只有一家(深圳中微电科技有限公司)让我佩服(还是通过电话面试的),工程师问的问题其实也不难,平时看书的朋友都大概知道(只是不能全面的回答罢了,所以写这个原因就是把它尽量搞清楚,下次在碰到类似的问题,就可以滔滔不绝了),其他3家的工程师,没有问一个驱动的方面的问题,我也不知道人家是做啥的?提问同样能反应一个人的专业知识的深度。做驱动确实有点难度,我会依然风雨前行!
二:linux内核原理面试必问(由易到难)
1:linux中内核空间及用户空间的区别?用户空间与内核通信方式有哪些?
2:linux中内存划分及如何使用?虚拟地址及物理地址的概念及彼此之间的转化,高端内存概念?
3:linux中中断的实现机制,tasklet与workqueue的区别及底层实现区别?为什么要区分上半部和下半部?
4:linux中断的响应执行流程?中断的申请及何时执行(何时执行中断处理函数)?
5:linux中的同步机制?spinlock与信号量的区别?
6:linux中RCU原理?
7: &linux中软中断的实现原理?()
8:linux系统实现原子操作有哪些方法?&()
9:MIPS Cpu中空间地址是怎么划分的?如在uboot中如何操作设备的特定的寄存器?&()
最近(离职)真的事情有点多,不然 我肯定总结的差不多了。
工作也定了,等我总结了,以后谁再问我这些问题我直接鄙视!!!!!!!!!!!!!!!!!!这些东西是工作中的理论指导,有了理论在做代码的时候才能考虑到什么改用,什么不该用!
1:linux中netfilter的实现机制?是如何实现对特定数据包进行处理(如过滤,NAT之类的)及HOOK点的注册?
2:linux中系统调用过程?如:应用程序中read()在linux中执行过程即从用户空间到内核空间?
3:linux内核的启动过程(源代码级)?
4:linux调度原理?
5:linux网络子系统的认识?
1:二分法查找
2:大小端转化及判断
3: &二维数组最外边个元素之和?
4:特定比特位置0和1
5:字符串中的第一个和最后一个元素交换(字符串反转)?
如果还有朋友,遇到过其他知识点。留言给我,我整理到一起,与面试官为敌!
所以在时间允许的条件下,最近把上面的问题整理一下,自己学习一下,其他朋友看到,也就不再到处找知识点。
阅读(279) | 评论(0) | 转发(0) |
相关热门文章
给主人留下些什么吧!~~
请登录后评论。}

我要回帖

更多关于 mips寄存器编号 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信