news 2026/1/13 12:29:37

openpnp - LPC17xx-DFU-Bootloader - SDCARD_V2HC可以正常使用的git提交点

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
openpnp - LPC17xx-DFU-Bootloader - SDCARD_V2HC可以正常使用的git提交点

文章目录

    • openpnp - LPC17xx-DFU-Bootloader - SDCARD_V2HC可以正常使用的git提交点
    • 概述
    • 笔记
    • END

openpnp - LPC17xx-DFU-Bootloader - SDCARD_V2HC可以正常使用的git提交点

概述

在学习开源工程LPC17xx-DFU-Bootloader
格式化了合适格式的SD卡(windows命令 format的用法), 将SD卡插入了板子(MKS SGEN_L V1.0)
然后从LPC17xx-DFU-Bootloader第一个git提交开始逐个git提交点进行学习。

很怪,作者的第2个提交点,就说可以读SD卡了。
但是我这SD卡操作始终失败。

笔记


作者是不说谎的。
他可以,我不可以,这说明编译调试环境不同。
但是作者并没有说他是啥环境。

我这环境是msys2-mingw64(arm-none-eabi-gcc (GCC) 13.3.0) + eclipse-cpp + openocd + jlink-edu-mini + arm-gnu-toolchain-14.3.rel1-mingw-w64-x86_64-arm-none-eabi(除了arm-none-eabi-gdb都用msys2中的), 如果想正常编译调试,对作者的提交做几个小改动即可。
对作者的提交点做分支,试了8个分支,还是不能操作SD卡。
那就继续看代码,不开分支做实验了。
作者的首次提交是2012/11/13, 等code review到2017/12/30的提交时,看到了和编译器相关的改动。

刚看到这个提交,是和编译器版本相关,且改的是spi相关的实现。马上感到,这个修改和SD卡操作相关。因为在板子上,只有SD卡用了SPI.

原来,作者原先是直接给寄存器赋值。这是不行的,以前做过笔记(STC15 - C51 - 操作寄存器时, 不要操作不相关的位)

直接对寄存器赋值,这是编码不规范的行为。如果换了编译器,可能出问题。

操作MCU的寄存器,只能是按位操作。如果是直接对寄存器赋值,有可能改变寄存器其他位的值,引起意料之外的效果。
还有可能像LPC17xx-DFU-Bootloader作者这种,赋值无效,寄存器值赋值后为0.并不是预想的值。

针对这个提交点,只需要改makefile, 就可以编译调试。



这版用-Og编译,可以编译过,不过空间已经很紧张了。

[1;4m SIZE LPC1769(bootloader)[0m FLASH15540bytes3% of 512kb95% of 16kb RAM3016bytes19% of 16kb12:19:54 Build Finished.0errors,27warnings.(took 10s.412ms)

单步调试,SPI的SD卡操作正常的,我插入的这张4GBSD卡的硬件容量规格类型为SDCARD_V2HC

SDHC = Secure Digital High Capacity
SD卡根据容量分为三类:
SDSC(Standard Capacity):容量≤2GB,即传统SD卡, 现在很难能搞到手做实验了。
SDHC(High Capacity):容量范围 4GB–32GB, 我手头库存的SD卡都是4~16GB, 现在从电商平台能买到的SD卡,大都是SDHC类型的SD卡。
SDXC(eXtended Capacity):容量≥64GB

END

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2025/12/16 13:07:42

D盾在金融系统安全中的实战应用案例

快速体验 打开 InsCode(快马)平台 https://www.inscode.net输入框内输入如下内容: 创建一个金融系统安全防护案例,展示D盾如何检测和防御针对金融系统的常见攻击,如中间人攻击、数据篡改等。包括攻击模拟、D盾检测过程、防御措施实施和效果验…

作者头像 李华
网站建设 2025/12/16 13:07:29

企业如何管控员工Chrome扩展安装行为

快速体验 打开 InsCode(快马)平台 https://www.inscode.net输入框内输入如下内容: 创建一个企业级Chrome扩展管理控制台,允许IT管理员集中审批、黑名单管理和强制卸载扩展。开发一个管理后台(使用Vue.js)和客户端代理(使用Go),支持批量策略部…

作者头像 李华
网站建设 2025/12/16 13:07:28

vLLM多进程设计:兼容性与性能的权衡

vLLM多进程设计:兼容性与性能的权衡 在构建大规模语言模型推理服务时,一个看似底层、实则影响深远的问题浮出水面:如何安全又高效地启动多个工作进程? 这个问题听起来简单——不就是调用 multiprocessing.Process 吗&#xff1f…

作者头像 李华
网站建设 2025/12/28 2:55:11

开发者必备:3秒解决GitHub访问问题的终极技巧

快速体验 打开 InsCode(快马)平台 https://www.inscode.net输入框内输入如下内容: 开发一个极简的GitHub快速修复工具,只需点击一次按钮即可完成:1) 自动测试最优的GitHub镜像IP;2) 智能切换Hosts配置;3) 临时启用Clo…

作者头像 李华
网站建设 2025/12/16 13:07:04

53、Solaris 文件与文件 I/O 详解

Solaris 文件与文件 I/O 详解 1. 数据完整性和同步标志 Solaris 提供了文件标志,用于设置不同级别的数据同步和文件完整性。在 open 系统调用中,可以设置三个适用的标志: O_SYNC 、 O_RSYNC 和 O_DSYNC 。这些标志在文件打开时会对应设置到文件结构的 f_flag 字…

作者头像 李华
网站建设 2025/12/16 13:07:01

布林坦承谷歌低估Transformer,“还被OpenAI挖走了Ilya”

鹭羽 发自 凹非寺量子位 | 公众号 QbitAI我们在AI方面犯了错误,而OpenAI抓住了机会。最近谷歌创始人谢尔盖・布林回母校斯坦福演讲,公开复盘谷歌的奋斗史:从诞生、崛起,再到AI比拼中大意掉队,以及靠Gemini 3逆风翻盘……

作者头像 李华