当前位置: 首页 > article >正文

1. 基于TI MSPM0G3507的1.28寸GC9A01圆屏SPI驱动移植实战

基于TI MSPM0G3507的1.28寸GC9A01圆屏SPI驱动移植实战最近在做一个智能手表的小项目选了一块1.28英寸的圆形IPS屏显示效果确实不错。屏幕驱动芯片是GC9A01通信接口是SPI。我用的主控是TI的MSPM0G3507这块芯片性价比很高但网上关于它驱动这块圆形屏的资料不多。折腾了两天总算把驱动移植成功了过程中踩了不少坑。今天我就把完整的移植过程从硬件接线到代码修改一步步分享出来希望能帮到同样在用MSPM0系列芯片的朋友。1. 准备工作认识你的屏幕和资料在开始动手写代码之前咱们得先把屏幕的“家底”摸清楚把该准备的资料都备齐。1.1 屏幕规格与资料获取我用的这块屏幕是1.28英寸的圆形IPS LCD驱动芯片是GC9A01。它的核心参数如下参数项规格说明工作电压3.3V工作电流约20mA模块尺寸44mm (高) x 36mm (宽) x 2.8mm (厚)通信协议SPI (串行外设接口)驱动芯片GC9A01注意屏幕工作电压是3.3V务必确保你的开发板供电也是3.3V直接接5V可能会烧毁屏幕所有的资料包括屏幕的数据手册、测试例程、字库图片等都可以从下面的链接获取。我强烈建议你先下载下来跟着教程操作时会方便很多。资料下载链接:https://pan.baidu.com/s/1lSjp7ISiKhkaXwqJsEOu2g提取码:8888下载解压后你会看到一个文件包里面最关键的就是厂家提供的通用C语言例程。这个例程是移植的基础但它通常是为STM32等常见MCU写的我们需要把它“翻译”成MSPM0能听懂的语言。1.2 引脚功能说明这块屏幕通过一个8Pin的FPC排线与主板连接。每个引脚是干什么的必须搞清楚这是硬件接线和软件配置的根基。屏幕的8个引脚及其作用如下表所示屏幕引脚功能说明对应MCU SPI引脚GND电源地接GNDVCC电源正 (3.3V)接3.3VSCLSPI时钟线SCK (时钟输出)SDASPI数据线MOSI (主机输出)RES复位引脚低电平有效接任意GPIODC数据/命令选择引脚接任意GPIOCSSPI片选引脚低电平有效NSS (片选)BLK背光控制引脚接任意GPIO或3.3V这里有几个关键点需要理解SCL (SCK)和SDA (MOSI)这是SPI通信的核心数据线必须连接到MCU的硬件SPI引脚上。RES, DC, CS, BLK这些是控制引脚它们不参与SPI数据传输只负责发控制信号因此可以连接到MCU的任何普通GPIO引脚上。灵活处理如果你的项目GPIO非常紧张RES可以接到MCU的复位引脚这样MCU复位时屏幕也复位BLK可以直接接3.3V或悬空代价是无法用代码控制背光开关。2. 硬件连接与SysConfig图形化配置硬件连接是第一步也是最容易出错的一步。连接好后我们利用TI强大的SysConfig工具来生成初始化代码能省去大量手动配置寄存器的麻烦。2.1 开发板引脚连接我使用的是MSPM0G3507开发板根据板子的引脚布局和我的项目情况选择了如下连接方式屏幕引脚连接到MSPM0G3507引脚GNDGNDVCC3.3VSCLPB9(作为SPI CLK)SDAPB8(作为SPI MOSI)RESPB10DCPB11CSPB14BLKPB26(用于PWM调光)提示PB8和PB9是这款芯片上SPI0的默认MOSI和CLK引脚用它们最省事。RES、DC、CS、BLK你可以根据自己板子的空闲情况任意更换记得在代码里同步修改就行。2.2 使用SysConfig配置引脚和SPITI的Code Composer Studio (CCS) 或 SysConfig独立工具提供了图形化配置界面这是我们移植工作的“神器”。打开工程与SysConfig在你的CCS工程中找到并双击empty.syscfg文件系统会自动打开SysConfig配置界面。添加GPIO配置我们需要为RES、DC、CS、BLK这四个控制引脚添加GPIO配置。点击界面上的ADD按钮。在搜索框输入“GPIO”选择GPIO驱动。一共需要添加4个GPIO实例分别对应四个引脚。在每个实例的配置中选择正确的引脚编号如PB10并将方向设置为“输出”(Output)。其他参数保持默认即可。添加并配置SPI再次点击ADD搜索并添加SPI驱动。在SPI配置中选择SPI0作为实例与你硬件连接的SPI模块对应。将MOSI引脚设置为PB8CLK引脚设置为PB9。模式选择GC9A01屏幕是SPI从机我们的MCU是主机。需要将模式设置为Master(主机模式)。帧格式根据GC9A01数据手册需要选择Motorola帧格式数据位为8 Bit。时钟极性与相位 (CPOL/CPHA)这是SPI通信最关键的时序参数配错了屏幕就没反应。对于GC9A01通常需要设置为CPOL0, CPHA0(即模式0)。如果不行可以尝试模式3 (CPOL1, CPHA1)具体以屏幕资料为准。保存与生成代码按下Ctrl S保存配置。点击CCS的编译按钮。这时可能会弹出一些关于引脚冲突的警告如果确认你的配置无误可以暂时忽略。编译后SysConfig会自动根据你的图形化配置在ti_msp_dl_config.h等文件中生成对应的宏定义和初始化代码。这个头文件通常已经被包含在board.h里了所以我们后续编程只需要#include “board.h”即可。3. 驱动代码移植与修改硬件和底层配置搞定后就到了修改屏幕驱动代码的环节。这是移植的核心需要仔细对照。3.1 导入源码与初步修改导入文件将厂家资料包里的整个LCD文件夹包含lcd.c、lcd.h、lcd_init.c、lcd_init.h、lcdfont.c等复制到你自己的CCS工程目录下。然后在CCS的工程浏览器中右键点击工程将这些.c文件添加到工程并将包含路径添加到编译器设置中。修改头文件引用打开lcd_init.h和lcd.h文件找到#include “sys.h”这一行。因为我们的工程里没有sys.h而是使用TI的标准头文件所以将其改为#include “board.h” // 替换原来的 #include “sys.h”打开lcd_init.c和lcd.c文件找到#include “delay.h”将其注释掉。因为TI的延时函数用法不同我们后续会用系统自带的DL_DelayMS()或其他方式实现延时。// #include “delay.h” // 注释掉这一行3.2 重写引脚控制宏与函数厂家例程里控制RES、DC等引脚的宏定义和函数是基于原有硬件平台的我们需要将其改为TI MSPM0的库函数格式。修改lcd_init.h中的引脚宏定义 找到lcd_init.h中关于引脚定义的代码段根据你在SysConfig中配置的引脚修改如下//-----------------LCD端口定义---------------- // 假设你的引脚配置为RESPB10, DCPB11, CSPB14, BLKPB26 // 你需要根据 SysConfig 生成的 ti_msp_dl_config.h 中的宏定义来填写 LCD_PORT 和 引脚宏 // 例如ti_msp_dl_config.h 中可能定义了GPIO_LCD_RES_PORT (GPIOB), GPIO_LCD_RES_PIN (PIN10) #define LCD_RES_Clr() DL_GPIO_clearPins(GPIO_LCD_RES_PORT, GPIO_LCD_RES_PIN) //RES拉低 #define LCD_RES_Set() DL_GPIO_setPins(GPIO_LCD_RES_PORT, GPIO_LCD_RES_PIN) //RES拉高 #define LCD_DC_Clr() DL_GPIO_clearPins(GPIO_LCD_DC_PORT, GPIO_LCD_DC_PIN) //DC拉低命令 #define LCD_DC_Set() DL_GPIO_setPins(GPIO_LCD_DC_PORT, GPIO_LCD_DC_PIN) //DC拉高数据 #define LCD_CS_Clr() DL_GPIO_clearPins(GPIO_LCD_CS_PORT, GPIO_LCD_CS_PIN) //CS拉低选中 #define LCD_CS_Set() DL_GPIO_setPins(GPIO_LCD_CS_PORT, GPIO_LCD_CS_PIN) //CS拉高取消 #define LCD_BLK_Clr() DL_GPIO_clearPins(GPIO_LCD_BLK_PORT, GPIO_LCD_BLK_PIN) //背光关 #define LCD_BLK_Set() DL_GPIO_setPins(GPIO_LCD_BLK_PORT, GPIO_LCD_BLK_PIN) //背光开关键GPIO_LCD_RES_PORT和GPIO_LCD_RES_PIN这类宏的名字需要你去ti_msp_dl_config.h文件里查找SysConfig具体生成的是什么然后保持一致。简化GPIO初始化函数 由于引脚已经在SysConfig中初始化好了lcd_init.c中的LCD_GPIO_Init(void)函数可以留空或者只放一个延时。void LCD_GPIO_Init(void) { // 引脚已在SysConfig中初始化此处无需额外操作 // 可以加一个简短延时确保电源稳定 DL_DelayMS(10); }3.3 重写SPI数据发送函数这是移植的最关键一步。厂家例程的LCD_Writ_Bus函数用的是模拟SPI或原有库的SPI函数我们必须把它替换成TI MSPM0的SPI驱动库函数。找到lcd_init.c中的LCD_Writ_Bus函数将其整体替换为以下内容/****************************************************************************** 函数说明LCD串行数据写入函数 (适配MSPM0) 入口数据dat 要写入的串行数据 返回值 无 ******************************************************************************/ void LCD_Writ_Bus(uint8_t dat) { uint8_t recv_data 0; // 接收变量SPI全双工通信需要读操作来清空缓冲区 LCD_CS_Clr(); // 拉低片选开始通信 // 使用TI驱动库发送一个字节数据 DL_SPI_transmitData8(SPI_LCD_INST, dat); // 等待SPI发送完成 while(DL_SPI_isBusy(SPI_LCD_INST)); // SPI是全双工的发送的同时也会接收。这里读取数据以清空接收缓冲区。 recv_data DL_SPI_receiveData8(SPI_LCD_INST); // 再次等待操作完成 while(DL_SPI_isBusy(SPI_LCD_INST)); LCD_CS_Set(); // 拉高片选结束本次通信 }注意SPI_LCD_INST这个实例名例如可能是CONFIG_SPI_0同样需要去ti_msp_dl_config.h文件中确认确保与SysConfig中配置的SPI实例名称一致。3.4 修正中文字库显示问题如果你需要显示中文厂家例程的字库索引可能和你的编译器编码不匹配会导致显示乱码。需要进行两处修改修改lcd.c中的字符指针偏移 打开lcd.c找到LCD_ShowChinese函数里面有一行s2;将其改为s3;。这是因为在UTF-8等编码下一个中文字符可能占3个字节。// 在 LCD_ShowChinese 函数内部找到类似循环中的这行 s 3; // 将原来的 s 2; 改为 s 3;修改lcdfont.c中的字库结构体 打开lcdfont.c文件找到字库结构体数组typFNT_GB12、typFNT_GB16、typFNT_GB24、typFNT_GB32的定义。 将每个结构体中的unsigned char Index[2];改为unsigned char Index[3];。// 例如修改 typFNT_GB16 结构体 typedef struct { unsigned char Index[3]; // 将 [2] 改为 [3] unsigned char Msk[32]; } typFNT_GB16;4. 移植验证与上电测试所有代码修改完成后就可以写个简单的测试程序来验证屏幕是否驱动成功了。在你的主文件例如main.c或empty.c中输入以下测试代码#include “ti_msp_dl_config.h” #include “board.h” #include “lcd_init.h” #include “lcd.h” // 如果你有图片数据头文件也需要包含例如 #include “pic.h” int main(void) { SYSCFG_DL_init(); // 初始化系统配置由SysConfig生成 LCD_Init(); // 初始化LCD屏幕 LCD_Fill(0, 0, LCD_W, LCD_H, WHITE); // 清屏为白色 while(1) { // 1. 显示中文 LCD_ShowChinese(30, 40, “中景园电子”, RED, WHITE, 32, 0); // 2. 显示字符串和屏幕直径 LCD_ShowString(32, 80, “LCD_Diameter:”, RED, WHITE, 16, 0); LCD_ShowIntNum(134, 80, LCD_W, 3, RED, WHITE, 16); // LCD_W是屏幕宽度也是直径 // 3. 显示浮点数递增 static float t 0; LCD_ShowString(32, 100, “Increasing Num:”, RED, WHITE, 16, 0); LCD_ShowFloatNum1(160, 100, t, 4, RED, WHITE, 16); t 0.11; // 4. 显示图片如果有图片数据 // for(int j0; j3; j) { // for(int i0; i6; i) { // LCD_ShowPicture(40*i, 120j*40, 40, 40, gImage_1); // } // } // 加一个延时避免刷新太快 DL_DelayMS(500); } }编译工程将程序下载到MSPM0G3507开发板然后上电。如果一切顺利你应该能看到圆形屏幕被点亮并在指定位置显示出红色的“中景园电子”文字和一个不断增加的浮点数。如果屏幕没有显示别着急按以下顺序排查检查硬件连接确保VCC和GND没有接反所有杜邦线接触牢固。检查电源用万用表量一下屏幕VCC引脚电压是否为稳定的3.3V。检查SPI时序重点确认SysConfig中SPI的CPOL和CPHA设置是否正确可以尝试在模式0和模式3之间切换。检查控制引脚电平用逻辑分析仪或示波器看看CS、DC、RES引脚在初始化时是否有正确的电平跳变。检查代码宏定义再次核对lcd_init.h中的端口、引脚宏定义是否与ti_msp_dl_config.h完全一致。驱动移植就是这样大部分工作是在做“翻译”和“适配”。一旦跑通这块漂亮的圆形屏就能在你的MSPM0项目上大放异彩了。

相关文章:

1. 基于TI MSPM0G3507的1.28寸GC9A01圆屏SPI驱动移植实战

基于TI MSPM0G3507的1.28寸GC9A01圆屏SPI驱动移植实战 最近在做一个智能手表的小项目,选了一块1.28英寸的圆形IPS屏,显示效果确实不错。屏幕驱动芯片是GC9A01,通信接口是SPI。我用的主控是TI的MSPM0G3507,这块芯片性价比很高&…...

告别手动打字!Qwen3-ASR-1.7B快速入门,视频字幕一键生成

告别手动打字!Qwen3-ASR-1.7B快速入门,视频字幕一键生成 1. 引言:你的视频字幕,还在手动制作吗? 想象一下这个场景:你刚刚完成了一段精彩的视频剪辑,内容很棒,画面也很流畅。但为了…...

从单兵作战到团队协作:基于 hatchify 的多 Agent 与半 Agent 架构实战解析

1. 从单兵作战到团队协作:Agent架构的演进之路 第一次接触AI Agent时,我像大多数开发者一样,把所有功能都塞进一个超级Agent里。这个"全能战士"要处理自然语言理解、工具调用、任务规划、记忆管理...结果可想而知:上下文…...

Nunchaku FLUX.1-dev效果展示:高动态范围(HDR)图像生成能力

Nunchaku FLUX.1-dev效果展示:高动态范围(HDR)图像生成能力 1. 惊艳的HDR图像生成效果 Nunchaku FLUX.1-dev模型在ComfyUI中展现出了令人惊叹的高动态范围(HDR)图像生成能力。这款基于扩散模型的AI工具能够生成细节丰富、色彩饱满的高质量图…...

PotPlayer智能字幕翻译:突破语言障碍的开源解决方案

PotPlayer智能字幕翻译:突破语言障碍的开源解决方案 【免费下载链接】PotPlayer_Subtitle_Translate_Baidu PotPlayer 字幕在线翻译插件 - 百度平台 项目地址: https://gitcode.com/gh_mirrors/po/PotPlayer_Subtitle_Translate_Baidu 如何实现视频字幕的实时…...

数据结构优化实战:提升伏羲气象大模型推理效率的关键技巧

数据结构优化实战:提升伏羲气象大模型推理效率的关键技巧 最近在折腾一个气象预报相关的项目,用到了伏羲这类大模型。模型效果确实不错,但一到推理阶段,那个速度就有点让人着急,特别是处理高分辨率、长时间序列的全球…...

Android 14 InputDispatcher ANR实战:如何快速定位和修复无焦点窗口导致的卡死问题

Android 14 InputDispatcher ANR实战:无焦点窗口卡死问题的深度诊断与修复指南 1. 问题现象与背景解析 在Android 14系统测试中,开发者常会遇到一种特殊的ANR(Application Not Responding)类型——InputDispatcher无焦点窗口导致的…...

Vitis 2021.1自定义IP编译报错终极解决方案(附完整Makefile模板)

Vitis 2021.1自定义IP编译报错深度解析与工程级解决方案 在Zynq MPSoC平台开发中,Vitis工具链的版本兼容性问题一直是工程师的痛点。特别是当项目涉及自定义IP核集成时,arm-xilinx-eabi-gcc.exe: error: *.c: Invalid argument这类看似简单的编译报错&am…...

GEE批量下载避坑指南:如何用geetools插件+定时器破解100+任务限制

GEE批量下载工程化实践:geetools插件与定时任务破解任务队列瓶颈 遥感数据处理工程师们对这样的场景一定不陌生:凌晨三点盯着GEE任务列表,手动点击第87个"Run"按钮时,浏览器突然崩溃——这意味着又要从头开始这场与任务…...

MTools快速上手:功能强大的现代化桌面工具,小白也能轻松驾驭

MTools快速上手:功能强大的现代化桌面工具,小白也能轻松驾驭 你是不是经常被各种专业软件搞得头大?想修张图,得打开Photoshop;想剪段视频,又得启动Premiere;想处理点文档,还得切到W…...

从报错到解决:手把手教你处理mosquitto与openssl的依赖关系(含路径检查技巧)

从报错到解决:手把手教你处理mosquitto与openssl的依赖关系(含路径检查技巧) 在Linux环境下编译mosquitto这类依赖OpenSSL的项目时,开发者经常会遇到各种头文件缺失或路径错误的问题。这类报错看似简单,但背后往往隐藏…...

利用ESP-WROOM-32实现双串口数据交互与OLED实时监控

1. ESP-WROOM-32双串口通信基础 ESP-WROOM-32作为乐鑫推出的明星级Wi-Fi/蓝牙双模模组,其内置的Xtensa双核处理器和丰富的外设接口让它成为物联网项目的首选。我最喜欢用它做串口中继器——因为这家伙天生自带三组硬件串口(UART0用于下载调试&#xff0c…...

阴阳师智能托管系统:OnmyojiAutoScript全流程自动化解决方案

阴阳师智能托管系统:OnmyojiAutoScript全流程自动化解决方案 【免费下载链接】OnmyojiAutoScript Onmyoji Auto Script | 阴阳师脚本 项目地址: https://gitcode.com/gh_mirrors/on/OnmyojiAutoScript 一、重新定义游戏体验:为什么选择智能托管系…...

为什么Flask警告你别用开发服务器?深入对比WSGI性能与安全差异

为什么Flask警告你别用开发服务器?深入对比WSGI性能与安全差异 每次在终端输入flask run时,那个醒目的黄色警告总会在眼前跳动——"This is a development server. Do not use it in a production deployment."。作为经历过生产环境事故的老手…...

避坑指南:ESP32移植LVGL v8.3遇到的那些SPI配置坑(附解决方案)

ESP32深度实战:LVGL v8.3移植与ST7789屏幕SPI优化全解析 当一块240x320的ST7789屏幕在ESP32上成功点亮LVGL的music demo时,那种流畅的动画效果往往会让开发者误以为移植工作已经完成。直到项目进入压力测试阶段,才会发现SPI配置中隐藏的那些&…...

深入解析STREAM测试:如何精准评估内存带宽性能

1. STREAM测试:为什么内存带宽是性能的“隐形瓶颈”? 大家好,我是老张,在硬件性能调优这个圈子里摸爬滚打了十几年。今天想和大家深入聊聊一个特别基础,但又极其重要的性能指标——内存带宽。你可能经常关注CPU的主频、…...

新手必看!MedGemma X-Ray医疗AI系统:一键部署教程,快速体验智能影像分析

新手必看!MedGemma X-Ray医疗AI系统:一键部署教程,快速体验智能影像分析 1. 为什么选择MedGemma X-Ray? 在医学影像分析领域,传统的人工阅片方式面临着效率低、工作量大、易疲劳等问题。MedGemma X-Ray作为一款基于前…...

自动化工具OnmyojiAutoScript:效率提升与场景化应用指南

自动化工具OnmyojiAutoScript:效率提升与场景化应用指南 【免费下载链接】OnmyojiAutoScript Onmyoji Auto Script | 阴阳师脚本 项目地址: https://gitcode.com/gh_mirrors/on/OnmyojiAutoScript OnmyojiAutoScript是一款基于Python的自动化脚本工具&#x…...

Qwen3-14b_int4_awq部署避坑指南:vLLM加载失败排查与Chainlit连接调试

Qwen3-14b_int4_awq部署避坑指南:vLLM加载失败排查与Chainlit连接调试 1. 模型简介与环境准备 Qwen3-14b_int4_awq是基于Qwen3-14b模型的int4量化版本,采用AWQ(Activation-aware Weight Quantization)技术进行压缩优化。这个量化…...

FLUX.1-dev-fp8-dit文生图效果展示:SDXL Prompt风格下中国水墨画生成实录

FLUX.1-dev-fp8-dit文生图效果展示:SDXL Prompt风格下中国水墨画生成实录 当AI绘画遇上传统水墨艺术,会碰撞出怎样的火花?本文通过FLUX.1-dev-fp8-dit模型结合SDXL Prompt风格,带你领略AI生成中国水墨画的惊艳效果。 1. 核心能力概…...

Qwen3-14b_int4_awq效果展示:Chainlit中生成技术博客、产品文案、邮件回复三类案例

Qwen3-14b_int4_awq效果展示:Chainlit中生成技术博客、产品文案、邮件回复三类案例 1. 模型简介 Qwen3-14b_int4_awq是基于Qwen3-14b模型的int4量化版本,采用AngelSlim技术进行压缩优化,专门用于高效文本生成任务。这个量化版本在保持较高生…...

1. 天空星STM32F407驱动1.47寸ST7789V3彩屏:软件SPI与硬件SPI移植实战

天空星STM32F407驱动1.47寸ST7789V3彩屏:软件SPI与硬件SPI移植实战 最近在做一个需要小尺寸显示屏的项目,选来选去,看中了这款1.47寸的IPS彩屏。分辨率172x320,驱动芯片是ST7789V3,用SPI通信,尺寸小巧&…...

深入解析JTAG标准IEEE STD 1149.1-2013中的Test Data Registers设计原理

1. JTAG测试数据寄存器基础架构 想象你面前有一排多米诺骨牌,轻轻推倒第一块就能引发连锁反应——这就是JTAG测试数据寄存器(Test Data Registers)的基本工作原理。作为IEEE STD 1149.1-2013标准的核心组件,这套精妙的串行移位机制让硬件调试变得像观察骨…...

UE5 C++实战:动态加载资源与类的完整流程(含蓝图示例)

UE5 C实战:动态加载资源与类的完整流程(含蓝图示例) 在虚幻引擎5(UE5)开发中,资源加载机制是构建动态游戏体验的核心技术之一。不同于静态加载在编译时就确定资源路径,动态加载允许开发者根据运…...

别再混淆了!一文搞懂script标签中async和defer的实战区别(附性能对比)

别再混淆了&#xff01;一文搞懂script标签中async和defer的实战区别&#xff08;附性能对比&#xff09; 在现代前端开发中&#xff0c;页面性能优化是一个永恒的话题。而<script>标签的加载策略&#xff0c;尤其是async和defer这两个属性的使用&#xff0c;往往成为开发…...

YOLOv8参数解析:从conf到iou,这些mode.predict()设置你真的用对了吗?

YOLOv8参数解析&#xff1a;从conf到iou&#xff0c;这些mode.predict()设置你真的用对了吗&#xff1f; 在目标检测领域&#xff0c;YOLOv8以其卓越的速度和精度平衡成为众多开发者的首选。然而&#xff0c;许多中级开发者在实际使用mode.predict()方法时&#xff0c;常常陷入…...

手把手教你用M-CBAM提升遥感图像分类精度(附Python代码)

手把手教你用M-CBAM提升遥感图像分类精度&#xff08;附Python代码&#xff09; 遥感图像分类一直是计算机视觉领域的重要研究方向&#xff0c;尤其在土地利用规划、环境监测和灾害评估等应用中发挥着关键作用。然而&#xff0c;由于遥感图像通常包含复杂的场景和多样化的地物目…...

JDK版本不兼容导致HTTPS握手失败?手把手教你解决TLS协议冲突问题

JDK版本不兼容导致HTTPS握手失败的深度解决方案 当Java开发者使用JDK1.8与旧系统&#xff08;如JDK7&#xff09;进行HTTPS交互时&#xff0c;经常会遇到javax.net.ssl.SSLHandshakeException: Received fatal alert: handshake_failure这样的错误。这通常是由于TLS协议版本不匹…...

从零开始:用openEuler 22.09搭建openGauss开发环境全记录(含Data Studio连接配置)

从零构建openGauss开发环境&#xff1a;基于openEuler 22.09的完整实践指南 在数据库技术快速迭代的今天&#xff0c;国产开源数据库openGauss凭借其高性能、高安全特性正获得越来越多开发者的青睐。本文将带您完成从操作系统部署到数据库连接的全流程实践&#xff0c;特别针对…...

openclaw赋能Nunchaku FLUX.1-dev:低成本GPU显存优化部署教程

openclaw赋能Nunchaku FLUX.1-dev&#xff1a;低成本GPU显存优化部署教程 想体验FLUX.1-dev强大的文生图能力&#xff0c;却被动辄30GB的显存要求劝退&#xff1f;别担心&#xff0c;今天就来分享一个“平民友好”的部署方案。通过openclaw平台和Nunchaku的量化技术&#xff0…...