U-BOOT的本地控制台输出

U-BOOT是伴随Linux成长起来的引导程序(Boot Loader),以代码短小精悍,功能灵活强大著称。虽然它支持包括比如Power PC和X86在内的很多种CPU,但是在ARM上使用的最广泛。比如幽兰代码本最初使用的就是U-BOOT。2023年年初,幽兰本增加了UEFI支持,但使用了一段时间后,又改为默认预装U-BOOT了。

曾经改用UEFI的主要原因有两个:一个是支持Windows,另一个是本地的交互界面,包括GUI和UEFI Shell。

改回U-BOOT的原因也主要有两个:一是U-BOOT速度快,二是硬件适配得比较好。U-BOOT对ARM的支持超过20年,而UEFI在ARM上的时间虽然算起来也有将近10年,但是实际使用不多,还属于磨合阶段。

换回U-BOOT后,少了UEFI的本地GUI和UEFI Shell。如何弥补这个缺失呢?

其实,U-BOOT也是有命令接口(Command Shell)的,而且命令的数量和功能与UEFI不相上下,只是使用起来不如UEFI那么方便。

幽兰使用的U-BOOT是基于瑞芯微定制过的版本修改的(以下简称RK版本)。以这个版本为例,只能通过串口终端才能激活和使用命令接口。

具体来说,需要使用一根串口线和两台电脑,在U-BOOT阶段在串口终端中按热键1打断自动启动,让其进入命令行。

Autoboot in 2 seconds
ulan# version
U-Boot 2017.09-YourLand_YouXi (Jan 27 2025 - 14:39:17 +0800)


gcc (Ubuntu 13.3.0-6ubuntu2~24.04) 13.3.0
GNU ld (GNU Binutils for Ubuntu) 2.42
ulan#

本地对话

串口终端需要两台电脑,肯定不如本地交互方便。为此,我一直在思考如何解决这个问题。

在谷歌公司工作的Simon Glass是U-BOOT的一位重要开发者,他在2023年6月的Embedded Open Source Summit上演讲,题目为《U-Boot中的近期进步》(Recent Advances in U-Boot)。

9fb3e18881e0c4d6b70aa2bc1d1030db.jpeg

(Simon Glass,U-Boot重要开发者,照片来自Github)

在这个演讲中,Simon介绍了U-Boot的expo子

在进行 `ruoyi-App` 的真机调试过程中,如果控制台输出后端接口错误,通常意味着请求未能正确到达服务器或服务器返回了异常响应。以下是常见的排查和解决方法: ### 1. 检查网络连接 确保设备与服务器处于相同的网络环境中,尤其是在本地开发时使用 `localhost` 或 `127.0.0.1` 会导致请求失败。建议使用局域网 IP 地址(如 `192.168.x.x`)替代本地地址,并确认防火墙未阻止相关端口的访问。 ### 2. 配置跨域请求(CORS) 后端服务可能因为跨域限制而拒绝请求。检查后端是否配置了正确的 CORS 策略,允许来自前端域名或 IP 的请求。例如,在 Spring Boot 应用中可以通过以下方式全局配置跨域支持[^1]: ```java @Configuration public class CorsConfig { @Bean public WebMvcConfigurer corsConfigurer() { return new WebMvcConfigurer() { @Override public void addCorsMappings(CorsRegistry registry) { registry.addMapping("/**") .allowedOrigins("*") .allowedMethods("GET", "POST", "PUT", "DELETE", "OPTIONS") .allowedHeaders("*") .exposedHeaders("Authorization"); } }; } } ``` ### 3. 检查请求地址与路径 确认前端请求的 URL 是否正确,包括协议(HTTP/HTTPS)、域名/IP、端口以及 API 路径。可以使用工具如 Postman 或浏览器开发者工具验证接口是否正常工作。 ### 4. 查看日志信息 查看后端日志以获取更详细的错误信息。常见的问题包括数据库连接失败、权限不足、SQL 语法错误等。日志通常会提供具体的错误堆栈,有助于快速定位问题。 ### 5. 检查 Token 和认证机制 如果接口依赖于 Token 认证(如 JWT),请确保 Token 正确且未过期。某些情况下,Token 缺失或无效也会导致接口调用失败。 ### 6. 检查 uni-app 请求拦截器 `ruoyi-App` 可能使用了请求拦截器来统一处理请求头、Token 添加等操作。检查拦截器逻辑是否存在异常,比如未正确拼接请求路径或未处理错误码的情况。 示例:uni-app 中的请求封装 ```javascript const http = uni.$u.http http.setConfig((config) => { config.baseUrl = 'http://your-api-url.com'; // 设置基础URL return config }) // 请求拦截器 http.interceptor.request((config, next) => { // 添加 token 到 header const token = uni.getStorageSync('token') if (token) { config.header['Authorization'] = 'Bearer ' + token } next(config) }) // 响应拦截器 http.interceptor.response((res) => { if (res.code !== 200) { uni.showToast({ title: '请求失败', icon: 'none' }) return false } return res.data }) ``` ### 7. 检查服务器部署状态 确保后端服务已正常启动并监听指定端口。可以通过访问健康检查接口(如 `/actuator/health`)来确认服务可用性。 ---
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值