Tina Linux 调试串口配置

uart3配置

1
gedit /home/ubuntu/tina-d1-h/device/config/chips/t113/configs/100ask/sys_config.fex
  1
  2
  3
  4
  5
  6
  7
  8
  9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 36
 37
 38
 39
 40
 41
 42
 43
 44
 45
 46
 47
 48
 49
 50
 51
 52
 53
 54
 55
 56
 57
 58
 59
 60
 61
 62
 63
 64
 65
 66
 67
 68
 69
 70
 71
 72
 73
 74
 75
 76
 77
 78
 79
 80
 81
 82
 83
 84
 85
 86
 87
 88
 89
 90
 91
 92
 93
 94
 95
 96
 97
 98
 99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
;sunxi platform application
;---------------------------------------------------------------------------------------------------------
; 说明: 脚本中的字符串区分大小写,用户可以修改"="后面的数值,但是不要修改前面的字符串
; 描述gpio的形式:Port:端口+组内序号<功能分配><内部电阻状态><驱动能力><输出电平状态>
;---------------------------------------------------------------------------------------------------------

;---------------------------------------------------------------------------------
; version:版本1.00
; machine:板级文件名
;---------------------------------------------------------------------------------
[product]
version = "100"
machine = "t113-nezha"


;----------------------------------------------------------------------------------
;debug_mode     = 0-close printf, > 0-open printf
;----------------------------------------------------------------------------------
[platform]
debug_mode  = 8

;----------------------------------------------------------------------------------
;storage_type   = boot medium, 0-nand, 1-sd, 2-emmc, 3-nor, 4-emmc3, 5-spinand -1(defualt)auto scan
;----------------------------------------------------------------------------------
[target]
boot_clock   	= 1008
storage_type    = 5
nand_use_ubi	= 1

[spinor_para]
;read_mode           =4
;flash_size          =16
;delay_cycle         =1
;frequency           =100000000

spi_sclk            = port:PC02<2><0><2><default>
spi_cs              = port:PC03<2><1><2><default>
spi0_mosi           = port:PC04<2><0><2><default>
spi0_miso           = port:PC05<2><0><2><default>
spi0_wp             = port:PC06<2><0><2><default>
spi0_hold           = port:PC07<2><0><2><default>

[card_boot]
card_no = 0
;----------------------------------------------------------------------------------
;card_ctrl 		-卡量产相关的控制器选择0      |
;card_high_speed        -速度模式 0为低速,1为高速|
;card_line        	-4:4线卡,8:8线卡|
;sdc_d1  		-sdc卡数据1线信号的GPIO配置     |
;sdc_d0			-sdc卡数据0线信号的GPIO配置  |
;sdc_clk  		-sdc卡时钟信号的GPIO配置   |
;sdc_cmd       		-sdc命令信号的GPIO配置|
;sdc_d3  		-sdc卡数据3线信号的GPIO配置    |
;sdc_d2			-sdc卡数据2线信号的GPIO配置  |
;----------------------------------------------------------------------------------
[card0_boot_para]
card_ctrl       = 0
card_high_speed = 1
card_line       = 4
sdc_d1          = port:PF0<2><1><2><default>
sdc_d0          = port:PF1<2><1><2><default>
sdc_clk         = port:PF2<2><1><2><default>
sdc_cmd         = port:PF3<2><1><2><default>
sdc_d3          = port:PF4<2><1><2><default>
sdc_d2          = port:PF5<2><1><2><default>
bus-width = 4
cap-sd-highspeed =
cap-wait-while-busy =
no-sdio =
no-mmc =
sunxi-power-save-mode =


;----------------------------------------------------------------------------------
;card_ctrl  		-卡启动控制器选择2
;card_high_speed       	-速度模式 0为低速,1为高速
;card_line        	-4:4线卡,8:8线卡
;sdc_ds  		-ds信号的GPIO配置
;sdc_d1  		-sdc卡数据1线信号的GPIO配置
;sdc_d0			-sdc卡数据0线信号的GPIO配置
;sdc_clk  		-sdc卡时钟信号的GPIO配置
;sdc_cmd       		-sdc命令信号的GPIO配置
;sdc_d3  		-sdc卡数据3线信号的GPIO配置
;sdc_d2			-sdc卡数据2线信号的GPIO配置
;sdc_d4  		-sdc卡数据4线信号的GPIO配置
;sdc_d5			-sdc卡数据5线信号的GPIO配置
;sdc_d6 	 	-sdc卡数据6线信号的GPIO配置
;sdc_d7			-sdc卡数据7线信号的GPIO配置
;sdc_emmc_rst  		-emmc_rst信号的GPIO配置
;sdc_ex_dly_used  	-ex_dly_used信号
;sdc_io_1v8  		-sdc_io_1v8高速emmc模式配置
;----------------------------------------------------------------------------------
[card2_boot_para]
card_ctrl       = 2
card_high_speed = 1
card_line       = 4
sdc_clk         = port:PC02<3><1><3><default>
sdc_cmd         = port:PC03<3><1><3><default>
sdc_d0          = port:PC06<3><1><3><default>
sdc_d1          = port:PC05<3><1><3><default>
sdc_d2          = port:PC04<3><1><3><default>
sdc_d3          = port:PC07<3><1><3><default>
sdc_tm4_hs200_max_freq = 150
sdc_tm4_hs400_max_freq = 100
sdc_ex_dly_used = 2
;sdc_io_1v8	= 1
sdc_tm4_win_th = 8
sdc_dis_host_caps = 0x180
;sdc_erase	= 2
;sdc_boot0_sup_1v8 = 1
;sdc_type	= "tm4"



;----------------------------------------------------------------------------------
;jtag_enable  	|JTAG使能   |
;jtag_ms        |测试模式选择输入(TMS) 的GPIO配置|
;jtag_ck 	|测试时钟输入(CLK) 的GPIO配置    |
;jtag_do	|测试数据输出(TDO) 的GPIO配置     |
;jtag_di	|测试数据输出(TDI) 的GPIO配置     |
;----------------------------------------------------------------------------------
[jtag_para]
jtag_enable     = 0
jtag_ms         = port:PE4<7><default><default><default>
jtag_ck         = port:PE7<7><default><default><default>
jtag_do         = port:PE6<7><default><default><default>
jtag_di         = port:PE5<7><default><default><default>

;*****************************************************************************
;
;dram select configuration
;
;select_mode	:	dram模式选择,	0:不进行自动识别
;					1:gpio识别模式(dram_para, dram_para1-15, 共16组有效)
;					2:gpadc识别模式(dram_para, dram_para1-7, 共8组有效)
;					3:1个IO+gpadc识别模式(dram_para, dram_para1-15, 共16组有效)。其中IO配置优先级按select_gpio0>select_gpio1>select_gpio2>select_gpio3
;gpadc_channel	:	选择gpadc通道	有效值(0-3)
;select_gpio1-4	:	选择gpio pin
;*****************************************************************************


[dram_select_para]
select_mode	= 0
gpadc_channel	= 1
select_gpio0	= port:PB9<0><1><default><default>
select_gpio1	= port:PB4<0><1><default><default>
select_gpio2	= port:PH1<0><1><default><default>
select_gpio3	= port:PH0<0><1><default><default>


;*****************************************************************************
;sdram configuration
;
;*****************************************************************************
[dram_para]
dram_clk            = 936
dram_type           = 3
dram_zq             = 0x7b7bfb
dram_odt_en         = 0x00
dram_para1          = 0x000010d2
dram_para2          = 0x0000
dram_mr0            = 0x1c70
dram_mr1            = 0x042
dram_mr2            = 0x18
dram_mr3            = 0x0
dram_tpr0           = 0x004A2195
dram_tpr1           = 0x02423190
dram_tpr2           = 0x0008B061
dram_tpr3           = 0xB4787896
dram_tpr4           = 0x0
dram_tpr5           = 0x48484848
dram_tpr6           = 0x00000048
dram_tpr7           = 0x1620121e
dram_tpr8           = 0x0
dram_tpr9           = 0x0
dram_tpr10          = 0x0
dram_tpr11          = 0x00340000
dram_tpr12          = 0x00000046
dram_tpr13          = 0x34000100

;----------------------------------------------------------------------------------
;twi configuration
;twi_used	0:关闭, 1:打开
;twi_port	0:twi0,  1:twi1, 2:twi2, 3:twi3, 4:twi4, 5:twi5, 6:r_twi0, 7:r_twi1
;twi_scl	boot0 scl的GPIO配置
;twi_sda	boot0 sda的GPIO配置
;----------------------------------------------------------------------------------
[twi_para]
twi_used = 0
twi_port = 2
twi_scl  = port:PG14<3><1><default><default>
twi_sda  = port:PG15<3><1><default><default>

;----------------------------------------------------------------------------------
;uart configuration
;uart_debug_port  |Boot串口控制器编号        |
;uart_debug_tx       |Boot串口发送的GPIO配置|
;uart_debug_rx  |Boot串口接收的GPIO配置     |
;----------------------------------------------------------------------------------
[uart_para]
uart_debug_port = 0
uart_debug_tx   = port:PB6<7><1><default><default>
uart_debug_rx   = port:PB7<7><1><default><default>

;----------------------------------------------------------------------------------
;dram_region_mbytes :设置drm大小以bytes为单位
;----------------------------------------------------------------------------------
[secure]
dram_region_mbytes       = 80
drm_region_mbytes        = 0
drm_region_start_mbytes  = 0

UART0配置成调试串口

sys_config.fex

1
gedit /home/ubuntu/tina-d1-h/device/config/chips/t113/configs/100ask/sys_config.fex
1
2
3
4
5
[uart_para]
uart_debug_port = 0
uart_debug_tx   = port:PE02<6><1><default><default>
uart_debug_rx   = port:PE03<6><1><default><default>
 

uboot修改启动参数

修改env.cfg启动地址和传输

1
2
3
4
#earlycon=uart8250,mmio32,0x05000000
earlyprintk=sunxi-uart,0x02500000
initcall_debug=0
console=ttyS0,115200

修改linux内核配置

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
CONFIG_DEBUG_VM=y
# CONFIG_SCHED_DEBUG is not set
CONFIG_DEBUG_MUTEXES=y
CONFIG_STACKTRACE=y
# CONFIG_FTRACE is not set
CONFIG_ATOMIC64_SELFTEST=y
CONFIG_DEBUG_LL=y
CONFIG_DEBUG_SUNXI_UART0=y
CONFIG_DEBUG_UART_PHYS=0x02500000
CONFIG_DEBUG_UART_VIRT=0xf2500000
CONFIG_EARLY_PRINTK=y
CONFIG_SPECIFY_CONSOLE_INDEX=y
CONFIG_CONS_INDEX=1

修改linux dts文件引脚配置;

带加密的嵌入式通讯协议

缘起

在之前看到的一个公众号文章介绍SACP(Snapmaker Advanced Communication Protocol)协议,我觉得挺好,但是就是缺少了一个内容加密功能,于是将文章丢给AI,让AI来帮我实现一个加密实现,以后做通讯协议的时候,协议就是加密的。

emsdk install latest 报错 SSL: CERTIFICATE_VERIFY_FAILED 解决方法.

emsdk install latest 出错

1
2
3
4
5
6
7
C:\emsdk>emsdk install latest
Resolving SDK alias 'latest' to '4.0.7'
Resolving SDK version '4.0.7' to 'sdk-releases-ef4e9cedeac3332e4738087567552063f4f250d3-64bit'
Installing SDK 'sdk-releases-ef4e9cedeac3332e4738087567552063f4f250d3-64bit'..
Installing tool 'node-20.18.0-64bit'..
Error: Downloading URL 'https://storage.googleapis.com/webassembly/emscripten-releases-builds/deps/node-v20.18.0-win-x64.zip': <urlopen error [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed: unable to get local issuer certificate (_ssl.c:1007)>
error: installation failed!

解决方法

导入ssl

修改 emsdk.py

引入ssl库

1
import ssl

修改文件内容

1
2
def download_with_urllib(url, file_name):
  u = urlopen(url)

改为如下

1
2
3
4
5
def download_with_urllib(url, file_name):
  # 创建不验证SSL证书的上下文
  unverified_context = ssl._create_unverified_context()
  # 将上下文注入urlopen
  u = urlopen(url, context=unverified_context)  # <-- 关键修改

修改upate_node.py

引入ssl库

基于MK64FN1M0VMD12芯片实现AES67 DANTE IP网络音频处理器

产品描述

基于MK64FN1M0VMD12芯片实现AES67 DANTE IP网络音频处理器

关于DANTE(Digital Audio Network Through Ethernet)

DANTE(Digital Audio Network Through Ethernet)是由澳大利亚公司Audinate开发的一种基于以太网的音频网络技术协议。它允许用户在标准IP网络上以低延迟、高音质的方式传输多个音频通道。

Rust 通过 JNI 提供加密解密接口

目标

在配置 Java 项目时,配制参数通过 AES 来加密,但反编译 class,很容易拿到秘钥, Rust 开发 JNI 提供给 java 接口,是一个相对安全的方法(不是绝对安全)。

实现步骤

要 实现 jniutil 库将支持 armeabi-v7a、arm64-v8a、x86 和 x86_64 四种 ABI。

解决Android studio build输出乱码问题.

问题描述

在Android studio编译的时候,输出的中文是乱码

解决方法

Android studio –> Help 菜单–> Edit Custom VM Options… 在打开的文件 输入

1
-Dfile.encoding=UTF-8

例如我自己的:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
-Xms128m
-Xmx4096m
-XX:ReservedCodeCacheSize=512m
-XX:+IgnoreUnrecognizedVMOptions
-XX:+UseG1GC
-XX:SoftRefLRUPolicyMSPerMB=50
-XX:CICompilerCount=2
-XX:+HeapDumpOnOutOfMemoryError
-XX:-OmitStackTraceInFastThrow
-ea
-Dsun.io.useCanonCaches=false
-Djdk.http.auth.tunneling.disabledSchemes=""
-Djdk.attach.allowAttachSelf=true
-Djdk.module.illegalAccess.silent=true
-Dkotlinx.coroutines.debug=off
-XX:ErrorFile=$USER_HOME/java_error_in_idea_%p.log
-XX:HeapDumpPath=$USER_HOME/java_error_in_idea.hprof

--add-opens=java.base/jdk.internal.org.objectweb.asm=ALL-UNNAMED
--add-opens=java.base/jdk.internal.org.objectweb.asm.tree=ALL-UNNAMED

-javaagent:C:\ja-netfilter\ja-netfilter.jar=jetbrains
-Dfile.encoding=UTF-8

修复Android Studio中的“module java.base does not open java.io to unnamed module”

问题描述:

Android studio在编译的时候提示:module java.base does not open java.io to unnamed module 错误

问题解决:

将以下内容添加到gradle.properties中即可:

1
2
3
4
5
6
org.gradle.jvmargs=-Xmx1536M \
--add-exports=java.base/sun.nio.ch=ALL-UNNAMED \
--add-opens=java.base/java.lang=ALL-UNNAMED \
--add-opens=java.base/java.lang.reflect=ALL-UNNAMED \
--add-opens=java.base/java.io=ALL-UNNAMED \
--add-exports=jdk.unsupported/sun.misc=ALL-UNNAMED

问题起因:

嵌入式环境使用AI功能:Tensor Flow Lite for Microcontrollers

TensorFlow Lite for Microcontrollers

TensorFlow Lite for Microcontrollers 是 TensorFlow Lite 的一个实验性移植版本,它适用于微控制器和其他一些仅有数千字节内存的设备。

它可以直接在“裸机”上运行,不需要操作系统支持、任何标准 C/C++ 库和动态内存分配。核心运行时(core runtime)在 Cortex M3 上运行时仅需 16KB,加上足以用来运行语音关键字检测模型的操作,也只需 22KB 的空间。