金色的骷髅 发表于 2015-1-16 15:23:44

来看看:Uboot对非Linux kernel的引诱

系统安全相关命令: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才能够像滚雪球一样越滚越大,发展到现在这种规模。

再见西城 发表于 2015-2-11 11:13:00

再次,Linux是用C语言编写的,我们有学习C语言的基础,读程序和编写代码方面存在的困难小一点,也是我们能较快掌握的原因之一。?

山那边是海 发表于 2015-3-2 11:37:50

掌握在Linux系统中安装软件,在安装Linux工具盘后大致日常所需的软件都会有,一般网络提供下载的软件都会有安装说明。

再现理想 发表于 2015-3-11 03:55:42

我们自学,就这个循环的过程中,我们学习了基本操作,用vi,shell,模拟内存的分配过程等一些OS管理。

海妖 发表于 2015-3-17 20:38:47

这种补充有助于他人在邮件列表/新闻组/论坛中搜索对你有过帮助的完整解决方案,这可能对他们也很有用。

透明 发表于 2015-3-25 02:01:20

请问谁有Linux的学习心得的吗?简单的说说?
页: [1]
查看完整版本: 来看看:Uboot对非Linux kernel的引诱