专栏中心

EEPW首页 > 专栏 > TQ3568 Buildroot文件系统终端上支持中文显示调试方法

TQ3568 Buildroot文件系统终端上支持中文显示调试方法

发布人:TQwangbin 时间:2023-07-27 来源:工程师 发布文章
图片修改busybox配置单  

如果是buildroot 则 make busybox-menuconfig ARCH=arm64diff --git a/rootfs/buildroot/package/busybox/busybox.config b/rootfs/buildroot/package/busybox/busybox.config            
index 02b1ee1..abc857e 100644            
--- a/rootfs/buildroot/package/busybox/busybox.config            
+++ b/rootfs/buildroot/package/busybox/busybox.config            
@@ -26,14 +26,14 @@ CONFIG_FEATURE_VERBOSE_USAGE=y            
CONFIG_BUSYBOX=y            
CONFIG_FEATURE_INSTALLER=y            
# CONFIG_INSTALL_NO_USR is not set            
-# CONFIG_LOCALE_SUPPORT is not set            
-# CONFIG_UNICODE_SUPPORT is not set            
+CONFIG_LOCALE_SUPPORT=y            
+CONFIG_UNICODE_SUPPORT=y            
# CONFIG_UNICODE_USING_LOCALE is not set            
-# CONFIG_FEATURE_CHECK_UNICODE_IN_ENV is not set            
-CONFIG_SUBST_WCHAR=0            
-CONFIG_LAST_SUPPORTED_WCHAR=0            
+CONFIG_FEATURE_CHECK_UNICODE_IN_ENV=y            
+CONFIG_SUBST_WCHAR=63            
+CONFIG_LAST_SUPPORTED_WCHAR=40907            
# CONFIG_UNICODE_COMBINING_WCHARS is not set            
-# CONFIG_UNICODE_WIDE_WCHARS is not set            
# 这个好像可以不用.            
+CONFIG_UNICODE_WIDE_WCHARS=y            
# CONFIG_UNICODE_BIDI_SUPPORT is not set            
# CONFIG_UNICODE_NEUTRAL_TABLE is not set            
# CONFIG_UNICODE_PRESERVE_BROKEN is not set            
@@ -805,13 +805,13 @@ CONFIG_ARPING=y            
图片

修改busybox源码    

busybox-1.34.1From eb3ae4ea53dde8018524a0ed9dc08a65625197cc Mon Sep 17 00:00:00 2001            
From: "hero.huang"
Date: Wed, 23 Aug 2017 11:33:47 +0800      
Subject: [PATCH 3/4] busybox: support chinese display in terminal      
     
Signed-off-by: hero.huang
---        
libbb/printable_string.c | 4 +---        
libbb/unicode.c          | 4 ++--        
2 files changed, 3 insertions(+), 5 deletions(-)        
       
diff --git a/libbb/printable_string.c b/libbb/printable_string.c        
index a814fd0..f4c7b00 100644        
--- a/libbb/printable_string.c        
+++ b/libbb/printable_string.c        
@@ -28,8 +28,6 @@ const char* FAST_FUNC printable_string2(uni_stat_t *stats, const char *str)        
                }        
                if (c < ' ')        
                        break;        
-               if (c >= 0x7f)        
-                       break;        
                s++;        
        }        
       
@@ -42,7 +40,7 @@ const char* FAST_FUNC printable_string2(uni_stat_t *stats, const char *str)        
                        unsigned char c = *d;        
                        if (c == '\0')        
                                break;        
-                       if (c < ' ' || c >= 0x7f)        
+                       if (c < ' ')        
                                *d = '?';        
                        d++;        
                }        
diff --git a/libbb/unicode.c b/libbb/unicode.c        
index e98cbbf..677db1f 100644        
--- a/libbb/unicode.c        
+++ b/libbb/unicode.c        
@@ -1027,7 +1027,7 @@ static char* FAST_FUNC unicode_conv_to_printable2(uni_stat_t *stats, const char        
                                        while ((int)--width >= 0);        
                                        break;        
                                }        
-                               *d++ = (c >= ' ' && c < 0x7f) ? c : '?';        
+                               *d++ = (c >= ' ') ? c : '?';        
                                src++;        
                        }        
                        *d = '\0';        
@@ -1035,7 +1035,7 @@ static char* FAST_FUNC unicode_conv_to_printable2(uni_stat_t *stats, const char        
                        d = dst = xstrndup(src, width);        
                        while (*d) {        
                                unsigned char c = *d;        
-                               if (c < ' ' || c >= 0x7f)        
+                               if (c < ' ')        
                                        *d = '?';        
                                d++;        
                        }        
--        
2.20.1
  

设置文件系统  

1.设置环境变量



export LC_ALL="zh_CN.UTF-8"            export LANG="zh_CN.UTF-8"
2.确认文件系统中ls是不是指向 busybox3.增加挂载时字符选择diff --git a/buildroot-201611/target/user_rootfs_extra/etc/udev/scripts/mount.sh b/buildroot-201611/target/user_rootfs_extra/etc/udev/scripts/mount.sh            
index 29a4f48..817a4aa 100755            
--- a/buildroot-201611/target/user_rootfs_extra/etc/udev/scripts/mount.sh            
+++ b/buildroot-201611/target/user_rootfs_extra/etc/udev/scripts/mount.sh            
@@ -31,7 +31,7 @@ automount() {            
         # grant it with  w/r/x permissions.            
         case $ID_FS_TYPE in            
         vfat|fat)            
-                MOUNT="$MOUNT -o umask=007,gid=`awk -F':' '/^disk/{print $3}' /etc/group`"            
+                MOUNT="$MOUNT -o iocharset=utf8,umask=007,gid=`awk -F':' '/^disk/{print $3}' /etc/group`"            
                 ;;            
         # TODO            
         *)
  

其它问题  

理论上应该可以了,如果不行试下:1.minicom上有可能不支持utf-8显示,可以使用命令 minicom -D /dev/ttyUSB0 -R utf82.在内核配置要加上CONFIG_NLS=y,CONFIG_NLS_UTF8=y,CONFIG_NLS_CODEPAGE_936=y(这个最好也加上)


专栏文章内容及配图由作者撰写发布,仅供工程师学习之用,如有侵权或者其他违规问题,请联系本站处理。 联系我们

关键词: 嵌入式 ARM开发

相关推荐

TI将边缘AI微控制器更深入地融入嵌入式设计

浅谈嵌入式LINUX系统教与学

资源下载 2007-02-09

嵌入式看门狗如何提升系统稳定性

嵌入式系统方案设计

华清远见嵌入式在线视频教程——1、走近嵌入式系统

视频 2008-07-08

未来倾向于UFS用于高性能嵌入式闪存

展会预告!米尔邀您相约德国嵌入式展 2026Embedded World

汽车存储器新突破:8nm128Mb嵌入式MRAM的研发

第一讲:嵌入式系统概述

IAR 扩展了嵌入式开发平台,提供 LTS 服务

米尔亮相德国嵌入式展2026 Embedded World

RK3576 + ROS2 SLAM建图与导航实战

意法半导体出厂中国制造的STM32 MCU

陈渝大侠翻译的 uClinux2.6入门

华清远见嵌入式在线视频教程——4、基于ARM的嵌入式开发

视频 2008-07-14

从COM到SMARC再到OSM:嵌入式计算模块的发展

Windows CE 开发初步(第一部)

更多 培训课堂
更多 焦点
更多 视频

技术专区