使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
内容概要:本文详细介绍了“秒杀商城”微服务架构的设计与实战全过程,涵盖系统从需求分析、服务拆分、技术选型到核心功能开发、分布式事务处理、容器化部署及监控链路追踪的完整流程。重点解决了高并发场景下的超卖问题,采用Redis预减库存、消息队列削峰、数据库乐观锁等手段保障数据一致性,并通过Nacos实现服务注册发现与配置管理,利用Seata处理跨服务分布式事务,结合RabbitMQ实现异步下单,提升系统吞吐能力。同时,项目支持Docker Compose快速部署和Kubernetes生产级编排,集成Sleuth+Zipkin链路追踪与Prometheus+Grafana监控体系,构建可观测性强的微服务系统。; 适合人群:具备Java基础和Spring Boot开发经验,熟悉微服务基本概念的中高级研发人员,尤其是希望深入理解高并发系统设计、分布式事务、服务治理等核心技术的开发者;适合工作2-5年、有志于转型微服务或提升架构能力的工程师; 使用场景及目标:①学习如何基于Spring Cloud Alibaba构建完整的微服务项目;②掌握秒杀场景下高并发、超卖控制、异步化、削峰填谷等关键技术方案;③实践分布式事务(Seata)、服务熔断降级、链路追踪、统一配置中心等企业级中间件的应用;④完成从本地开发到容器化部署的全流程落地; 阅读建议:建议按照文档提供的七个阶段循序渐进地动手实践,重点关注秒杀流程设计、服务间通信机制、分布式事务实现和系统性能优化部分,结合代码调试与监控工具深入理解各组件协作原理,真正掌握高并发微服务系统的构建能力。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值