仓酷云

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 597|回复: 8
打印 上一主题 下一主题

[其他Linux] 来看看:Uboot对非Linux kernel的引诱

[复制链接]
金色的骷髅 该用户已被删除
跳转到指定楼层
楼主
发表于 2015-1-16 15:23:44 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
系统安全相关命令:passwd、su、umask、chgrp、chmod、chown、chattr、sudo、pswho

完成了uboot对非linuxkernel的引诱。固然有一个IH_TYPE_STANDALONE,可是没有完成。nnd.只能本人想举措。完成具体见上面。
1、两个命令
setbootcmdtftp84000000uImage;bootm84000000
setbootdelay1
2、非linuxkernel的引诱完成办法:
一共三个函数:jump,selectboot和system_boot
把jump放在必要跳转的中央,参数就是要跳转的地点。然后前往,重启体系。select放在main的开首。经由过程判别ram的特定地点的特定信息完成跳转。
system_boot完成体系的从头启动
#defineFDMA_SRAM_TOP_ADDRESS0xB9229800
#defineMAGIC_NUM0x71097100
#defineDEAD_PATTERN0xBAD0BADF
#defineST40_CPG_REGS_BASE0xFFC00000#define
ST40_CPG_WTCNT(ST40_CPG_REGS_BASE+0x08)
#defineST40_CPG_WTCSR(ST40_CPG_REGS_BASE+0x0C)
#defineST40_CPG_WTCSR2(ST40_CPG_REGS_BASE+0x1C)
voidJump(unsignedintaddress)
{
STSYS_WriteRegDev32LE(FDMA_SRAM_TOP_ADDRESS-4*1,MAGIC_NUM);
STSYS_WriteRegDev32LE(FDMA_SRAM_TOP_ADDRESS-4*2,address);
STSYS_WriteRegDev32LE(FDMA_SRAM_TOP_ADDRESS-4*3,~address);
STSYS_WriteRegDev32LE(FDMA_SRAM_TOP_ADDRESS-4*4,~MAGIC_NUM);
STSYS_WriteRegDev16LE(ST40_CPG_WTCNT,0x5AF0);/*Watchdogcounter*/
STSYS_WriteRegDev16LE(ST40_CPG_WTCSR,0xA547);/*Watchdogcontrol*/
STSYS_WriteRegDev16LE(ST40_CPG_WTCSR2,0xAA00);/*Watchdogcontrol2*/
STSYS_WriteRegDev16LE(ST40_CPG_WTCSR,0xA5C7);/*Startwatchdogcounter*/for(;;);
}
voidSelectBoot(void)
{
unsignedintMagicNum=0;
unsignedintNotMagicNum=0;
unsignedintJumpAddress=0;
unsignedintNotJumpAddress=0;void(*entry)(void);
/*entry=0xa0100000;
entry();*///if((STSYS_ReadRegDev16LE(ST40_CPG_WTCSR2)&0xFF)!=0x0)
{
MagicNum=STSYS_ReadRegDev32LE(FDMA_SRAM_TOP_ADDRESS-4*1);
JumpAddress=STSYS_ReadRegDev32LE(FDMA_SRAM_TOP_ADDRESS-4*2);
NotJumpAddress=STSYS_ReadRegDev32LE(FDMA_SRAM_TOP_ADDRESS-4*3);
NotMagicNum=STSYS_ReadRegDev32LE(FDMA_SRAM_TOP_ADDRESS-4*4);
if((MagicNum==MAGIC_NUM)
&&(MagicNum==(~NotMagicNum))
&&(JumpAddress==(~NotJumpAddress)))
{
entry=(void(*)(void))JumpAddress;
STSYS_WriteRegDev32LE(FDMA_SRAM_TOP_ADDRESS-4*1,DEAD_PATTERN);
STSYS_WriteRegDev32LE(FDMA_SRAM_TOP_ADDRESS-4*2,DEAD_PATTERN);
STSYS_WriteRegDev32LE(FDMA_SRAM_TOP_ADDRESS-4*3,DEAD_PATTERN);
STSYS_WriteRegDev32LE(FDMA_SRAM_TOP_ADDRESS-4*4,DEAD_PATTERN);
#if0/*SetupForwatchdogincasejumpfailed.*/
STSYS_WriteRegDev16LE(ST40_CPG_WTCNT,0x5AF0);
STSYS_WriteRegDev16LE(ST40_CPG_WTCSR,0xA543);
STSYS_WriteRegDev16LE(ST40_CPG_WTCSR2,0xAA01);
STSYS_WriteRegDev16LE(ST40_CPG_WTCSR,0xA5C7);
#endifentry();while(1);
}
}
}voidsystem_reboot(void)
{
ulongsr;
asm("stcsr,%0":"=r"(sr));
sr|=(1<<28);/*setblockbit*/
asm("ldc%0,sr"::"r"(sr));
asmvolatile("trapa#0");
}
</p>
当你经过一段时间的学习后就应该扩充自己的知识,多学习linux命令,但是不要在初学阶段就系统的学习linux命令。
金色的骷髅 该用户已被删除
沙发
 楼主| 发表于 2015-1-18 15:49:37 | 只看该作者
如果上面的措施没有解决问题,此时你就需要Linux社区的帮助了。Linux的使用者一般都是专业人士,他们有着很好的电脑背景且愿意协助他人。
活着的死人 该用户已被删除
板凳
发表于 2015-1-27 10:15:15 | 只看该作者
请问谁有Linux的学习心得的吗?简单的说说?
小妖女 该用户已被删除
地板
发表于 2015-2-5 10:33:00 | 只看该作者
首先Linux是开源的,这也是最主要的原因,想学windows,Unix,对不起我们没源代码。也正是因为这样,Linux才能够像滚雪球一样越滚越大,发展到现在这种规模。
再见西城 该用户已被删除
5#
发表于 2015-2-11 11:13:00 | 只看该作者
再次,Linux是用C语言编写的,我们有学习C语言的基础,读程序和编写代码方面存在的困难小一点,也是我们能较快掌握的原因之一。?
山那边是海 该用户已被删除
6#
发表于 2015-3-2 11:37:50 | 只看该作者
掌握在Linux系统中安装软件,在安装Linux工具盘后大致日常所需的软件都会有,一般网络提供下载的软件都会有安装说明。
再现理想 该用户已被删除
7#
发表于 2015-3-11 03:55:42 | 只看该作者
我们自学,就这个循环的过程中,我们学习了基本操作,用vi,shell,模拟内存的分配过程等一些OS管理。
海妖 该用户已被删除
8#
发表于 2015-3-17 20:38:47 | 只看该作者
这种补充有助于他人在邮件列表/新闻组/论坛中搜索对你有过帮助的完整解决方案,这可能对他们也很有用。
透明 该用户已被删除
9#
发表于 2015-3-25 02:01:20 | 只看该作者
请问谁有Linux的学习心得的吗?简单的说说?
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|仓酷云 鄂ICP备14007578号-2

GMT+8, 2024-11-1 07:10

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表