使U-BOOT能正确引导LINUX

本文介绍如何配置U-Boot以正确引导Linux内核,包括修改CPU频率及传递必要的参数给内核。文中详细展示了如何调整U-Boot配置文件以确保稳定引导,并提供了关于如何设置启动参数的具体步骤。
1、为了能使得U-BOOT正确引导linux内核。必须传递合适的参数给内核。
修改include/configs/zj2410.h如下:
……
……
/************************************************************
 * RTC
 ************************************************************/
#define    CONFIG_RTC_S3C24X0     1
 
/* allow to overwrite serial and ethaddr */
#define CONFIG_ENV_OVERWRITE
 
#define CONFIG_BAUDRATE             115200
 
/************************************************************/
/* My Add */
/* enable passing of ATAGs   */
#define CONFIG_CMDLINE_TAG      1
#define CONFIG_SETUP_MEMORY_TAGS 1
#define CONFIG_INITRD_TAG   1
 
/***********************************************************
 * Command definition
 ***********************************************************/
#define CONFIG_COMMANDS /
                     (CONFIG_CMD_DFL   | /
                     CFG_CMD_CACHE      | /
                     CFG_CMD_NAND       | /
                     /*CFG_CMD_EEPROM |*/ /
                     /*CFG_CMD_I2C |*/ /
                     /*CFG_CMD_USB |*/ /
                     CFG_CMD_REGINFO | /
                     CFG_CMD_DATE | /
                     CFG_CMD_ELF)
……
……
 
2、为了能稳定正确引导linux内核,得修改UBOOT2410CPU频率。
smdk2410U-BOOT原来运行频率是202.8M,在这个频率我已开始能正确引导内核,但是后来突然就不能引导了, 总是死在下面这个地方:
Uncompressing Linux....................................................... done, booting the kernel.
按照网上的说法,内核中,在 /arch/arm/mach_s3c2410/s3c2410.c        fclk = s3c2410_get_pll(MPLLCON, xtal);   // 读出来的 fclk 结果和 bootloader 的频率不一致。
既然不能用 202.8M VIVI 200M 能跑得好好的,那我把 U-BOOT 的频率改成 200M 2.6.20 .3 的内核和阳初光盘的 2.4.18 的内核都能 正确稳定地 引导了。
修改 board/yangchu2410/smdk2410.c 文件如下:
#define FCLK_SPEED 1
#if FCLK_SPEED==0  /* Fout = 203MHz, Fin = 12MHz for Audio */ #define M_MDIV 0xC3 #define M_PDIV 0x4 #define M_SDIV 0x1 #elif FCLK_SPEED==1  /* Fout = 202.8MHz */ //#define M_MDIV 0xA1 //#define M_PDIV 0x3 //#define M_SDIV 0x1 #define M_MDIV 0x5c  /* Fout = 200MHz */ #define M_PDIV 0x4 #define M_SDIV 0x0 #endif
 
 
 
好了,编译烧写U-BOOTNAND FLASH,通过setenv 设置bootargs
引导内核时就可以将bootargs传递给内核了。
 
注意:
1、  对于U-BOOT而言,启动内核时候使用bootm命令才能传递内核参数,使用go命令是不传递内核参数的。
2、 命令引导的只能是用U-BOOT的mkimage工具做过的内核映像,所以要引导阳初光盘带的内核映像,必须用其工具转换一下,至于这个工具怎么用,到U-BOOT的tools目录下找这个工具去吧,./mkimage --help 或者网上找找资料看下就知道了。^_^。 bootm
内容概要:本文详细记录了对一个Android ARM64静态ELF文件中字符串加密机制的逆向分析过程。该ELF文件的所有字符串均被加密,无法通过常规strings命令或IDA直接识别。作者通过分析发现,加密字符串存储在.rodata段,其解密所需信息(包括密文地址、长度和16位密钥)保存在.data.rel.ro段的40字节描述符中。核心解密函数sub_10F408采用自反的双pass流密码算法,结合固定密钥KEY_TERM(由.data段24字节数据计算得出),实现字节级非线性、位置与长度相关的加密。文章还复现了完整的Python解密脚本,并揭示了该保护机制的本质为代码混淆而非强加密,最终成功批量解密全部956条字符串,暴露程序真实行为,如shell命令模板、设备标识篡改、网络重置等操作。此外,文中还提及未启用的自定义壳框架及其反dump设计。; 适合人群:具备逆向工程基础的安全研究人员、二进制分析人员及对ELF保护技术感兴趣的开发者。; 使用场景及目标:①学习ELF二进制中字符串加密的典型实现方式与逆向突破口;②掌握从结构识别、函数追踪到算法还原的完整逆向流程;③理解“绑定二进制”的完整性校验设计及其局限性;④实践编写IDAPython脚本自动化提取与解密敏感数据。; 阅读建议:此资源以实战案例驱动,不仅展示技术细节,更强调逆向思维与验证方法,建议读者结合IDA调试环境,逐步跟随文中步骤进行动态分析与算法验证,深入理解每一步的推理依据。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值