F1C100S驱动开发

Uboot和系统跑起来了,接下来就是进行驱动开发了; Heartbeat(心跳灯) 修改设备树: 在设备树文件arch/arm/boot/dts/sun8i-v3s-licheepi-zero.dts中; 在 / { } 所包裹的根节点目录下添加: leds { compatible = "gpio-leds"; user_led { label = "led:usr"; gpios = ; /* PE12 */ }; }; 其中 gpios = ; /* PE12 */ 代表引脚 4 * 32 + 12也就是PE12( A~G: 0~6) 其名字为:led:usr; 系统启动后与LED控制有关的文件; 系统启动后,将看到这样的文件: $: ls /sys/class/leds/ led:usr 这里三个文件夹分别对应设备树中定义的三个LED; 编译设备树: 可以只编译设备树,不编译其他文件; make ARCH=arm CROSS_COMPILE=arm-linux-gnueabi- dtbs -j12 控制LED灯亮灭: 点亮LED: $: echo 1 > /sys/class/leds/led\:usr/brightness 熄灭LED: $: echo 0 > /sys/class/leds/led\:usr/brightness 控制LED闪烁: ...

October 2, 2022 · 2 min · Rancho

F1C100S开发记录

最近画了一个Linux板子,主控是全志的F1C100S,自带了32M RAM,不是很大,但是可以学习下; 板子图片: 板子正面 板子反面 UBoot启动 FLASH下载工具使用 1、通过命令 sudo sunxi-fel ver 来确认有无成功进入fel模式; sudo sunxi-fel ver 2、短接FLASH1和4脚,可以进入fel模式,其实就是CS引脚拉低; 3、单次运行(下载到RAM中): sunxi-fel uboot /your/path/to/u-boot-sunxi-with-spl.bin 4、烧进 spi-flash (开机自启) sunxi-fel -p spiflash-write 0 /your/path/to/u-boot-sunxi-with-spl.bin 其中0是烧录偏移地址; Uboot编译 sudo apt-get install git git clone https://gitee.com/LicheePiNano/u-boot.git cd u-boot # 查看分支 git branch -a # 切换到 Nano 分支 git checkout nano-lcd800480 git clone -b nano-lcd800480 --depth=1 https://github.com/Lichee-Pi/u-boot.git 此处告知make采用arm-linux-gnueabi下的所有交叉编译工具,目标架构为Arm,设定各项默认配置为 nano 的spiflash支持版 make ARCH=arm CROSS_COMPILE=arm-linux-gnueabi- f1c100s_nano_uboot_defconfig # 若不带spi-flash的板子,请换成 licheepi_nano_defconfig # 进行可视化配置 make ARCH=arm menuconfig # 修改默认bootcmd gedit include/configs/suniv.h # 需要修改为 #define CONFIG_BOOTCOMMAND "run distro_bootcmd" # 开始编译 make ARCH=arm CROSS_COMPILE=arm-linux-gnueabi- -j8 只需要u-boot-sunxi-with-spl.bin即可; ...

October 1, 2022 · 7 min · Rancho

FOC项目记录

大四应该没多少事情了,想继续做一下FOC相关的; 开发过程(持续更新): 2022年9月29日: 中间好久没有更新,是这几天比较忙,没有时间写; 算下来,FOC的板子做了三个大的版本,五个比较小的版本,可以说是一次次的迭代更新; 主控 供电方案 驱动模块 是否有电流采样 通信方式 FOC-V1 STM32F103C6T6 AMS1117-3.3V DRV8313 否 UART FOC-V2 STM32F103C6T6 AMS1117-3.3V DRV8313 否 UART FOC-V3 STM32F103C6T6 AMS1117-3.3V MP6540 是 UART FOC-V4 AT32F403ACGU7 AMS1117-5V & AMS117-3.3V DRV8313 否 UART FOC-V5 STM32F405RGT6 L7805 & AMS1117-3.3V BTN7960B 是 UART/CAN 代码自己也加入了很多功能,电流环还没有做出来,后边再继续努力做,加油! 板子PCB: 版本 图片 FOC-V1 FOC-V2 FOC-V3 FOC-V4 FOC-V5 2022年9月12日: 中间好久不更新,这些天对FOC项目做了更多的测试,还有做了一些应用,例如倒立摆,平衡车等等; 想要加上电流环,刚开始自然的想法是,用合金采样电阻加电流放大器加stm32的AD,这个外围电路比较麻烦,成本也很高; 昨天查找资料发现了一个芯片:MP6540,三相电机驱动芯片,且内部集成了电流检测,只需要用32的AD去读就可以了,今上午画了一个测试板,已经发去打样了,希望能正常工作; 等板子回来了,我测试一下,在说要不要改用这个芯片; 2022年9月3日: 修改的板子今天已经到了,焊接好了,也测试了,很完美,发热没那么严重了; 这次使用的LDO是AMS1117(SOT-89封装),它的输入最高电压是18V,完全够用了,发热虽然还是很大,但封装也更大了,所以还是可以接受的; AMS1117数据手册说明的的输入电压限制 在测试过程中,长时间运转未出现任何问题,闭环控制,开环控制都可以很好运转; 后续就是开始做平衡车,调参数; 2022年8月22日: 今天又查看了一下RT9013-33GB的数据手册,发现电压最大为5.5V,看来是要换供电部分的电路了; 输入电压限制 输出电流限制 ...

September 29, 2022 · 1 min · Rancho

git常用命令

最近在做FOC项目的时候,用到了GIT中的分支功能,因而再复习一下GIT的用法,在此记录一下GIT常用命令; 为表简洁,我就直接给出具体的命令以及简短的注释和自己对此的理解; 1、git init 用于初始化git仓库; 2、git add +文件名 将指定工作区文件提交到git暂存区; -A,是添加文件夹内的所有文件到暂存区; 每次提交,都要git add加入到暂存区,然后再commit提交; 第一次修改 -> git add -> 第二次修改 -> git add -> git commit; commit提交的是git add 加入的修改的内容,而不是文件当前的内容; 3、git commit -m +“本次提交的说明” 将暂存区文件提交到仓库; -m,后边是关于本次提交的说明; 该命令执行成功后会显示提交的内容: 例如: 1 file changed:1个文件被改动; 2 insertions:插入了两行内容; 4、git status 显示当前仓库的状态(被修改的文件是否被提交); 例如某个文件被修改却未被提交; 包括工作区的文件修改情况和暂存区的文件修改情况; 5、git diff +文件名 查看文件修改内容; 常看尚未被提交的文件做了什么修改; 是工作区和暂存区文件之间的差别; 6、git log 显示从近到远的提交日志; 7、git reset —hard HEAD^ 回退到上一版本; HEAD 当前版本 HEAD^ 上一版本 HEAD^^ 上上一版本 8、git reset —hard 1094a 回退或者前进到指定版本; —hard,后边的是版本号前几位; ...

September 28, 2022 · 4 min · Rancho

UART中的硬件流控CTS和RTS

昨天花了一个USB转TTL小板子,其中芯片引脚有RT和CTS,之前从没用过,还是查找资料了解一下吧。 RTS (Require ToSend,发送请求)为输出信号,用于指示本设备准备好可接收数据,低电平有效,低电平说明本设备可以接收数据。 CTS (Clear ToSend,发送允许)为输入信号,用于判断是否可以向对方发送数据,低电平有效,低电平说明本设备可以向对方发送数据。

September 14, 2022 · 1 min · Rancho

markdown编辑数学公式

用Markdown编辑数学公式看起来会很舒服,学一下; 希腊字母: 常见希腊字母: $\alpha$、$\beta$、$\chi$、$\Delta$、$\Gamma$、$\Theta$ $$ \alpha\beta\chi $$ 显示效果为: \alpha\beta\chi\Delta\Gamma\Theta 注:当希腊字母的LaTex语法首字母大写时,即输出大写的希腊字母;首字母小写时,输出小写的希腊字母。 数学结构: 分数: $\frac{abc}{xyz}$ 显示效果为: \frac{abc}{xyz} 根号: $$ \frac{\sqrt{1+abc}}{\sqrt{1-abc}} $$ 显示效果为: \frac{\sqrt{1+abc}}{\sqrt{1-abc}} 向量符号: $\overrightarrow{F}$ 显示效果为: \overrightarrow{F} 定界符: $|$、$\|$、$\Uparrow$ 显示效果为: |、|、\Uparrow 注:将上述定界符与\left和right组合使用可以使得定界符匹配其内容的高度。 比如要构建一个如下的矩阵的行列式。 $$ \left|\begin{matrix} 1 & 2 & 3 \\ 4 & 5 & 6 \\ 7 & 8 & 9 \end{matrix} \right| $$ 显示效果如下: \left|\begin{matrix} 1 & 2 & 3 \ 4 & 5 & 6 \ 7 & 8 & 9 \end{matrix} \right| ...

August 16, 2022 · 1 min · Rancho

刷题中碰到的知识点

记录一下刷题中遇到的知识点; 1、(断言)assert 在程序设计中,断言(assertion)是一种放在程序中的一阶逻辑(如一个结果为真或是假的逻辑判断式),目的是为了标示与验证程序开发者预期的结果-当程序执行到断言的位置时,对应的断言应该为真。若断言不为真时,程序会中止执行,并给出错误消息。

August 8, 2022 · 1 min · Rancho

XOR用法

异或的常见用法; XOR用法 一、运算真值表: 0 ^ 0 = 0 0 ^ 1 = 1 1 ^ 0 = 1 1 ^ 1 = 0 二、运算定理: 一个值与自身的运算,总是为 false。 x ^ x = 0 一个值与 0 的运算,总是等于其本身。 x ^ 0 = x 可交换性 x ^ y = y ^ x 结合性 x ^ (y ^ z) = (x ^ y) ^ z 三、应用: 1、简化运算; 多个值的异或运算,可以根据运算定律进行简化。 a ^ b ^ c ^ a ^ b = a ^ a ^ b ^ b ^ c = 0 ^ 0 ^ c = c 2、交换值; 两个变量连续进行三次异或运算,可以互相交换值。 假设两个变量是x和y,各自的值是a和b。下面就是x和y进行三次异或运算,注释部分是每次运算后两个变量的值。 x = x ^ y // (a ^ b, b) y = x ^ y // (a ^ b, a ^ b ^ b) => (a ^ b, a) x = x ^ y // (a ^ b ^ a, a) => (b, a) 这是两个变量交换值的最快方法,不需要任何额外的空间。 3、加密; 异或运算可以用于加密。 第一步,明文(text)与密钥(key)进行异或运算,可以得到密文(cipherText)。 text ^ key = cipherText 第二步,密文与密钥再次进行异或运算,就可以还原成明文。 ...

August 8, 2022 · 2 min · Rancho

如何做到有用的学习

转自知乎,如何做到有用的学习; 问题描述:为什么我的成绩那么好,最终还是成了一个没用的人? 作者:东坡夜奔 链接:https://www.zhihu.com/question/30375123/answer/48170636 来源:知乎 著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。 基本问题: 说两个问题。一是知识空白的问题。二是知识技能化的问题。 1、知识空白 我们初高中(甚至大学)学到的知识,是教育部根据我国整体教育情况,考虑成本和国家工业化的需求,制定的一整套学习计划。 说白了,目的很简单:就是用尽可能低的成本,培养出对于推进我国工业化和现代化足够多的人才。 对于每个人个人的具体情况,对于一个人的人格情感培养,对于毕业后在社会上的就业,对于一个人的自我实现,基本上都没有考虑。 它是一个整体考量,不是个体考量。 所以,你会有很多知识空白。 很多对于你自己人生成长成才所必须的知识,是空白的,尤其对于出身小地方或者农村的孩子们,学校教育几乎是唯一接受教育的途径,这种情况就更加严重。 情感教育,心理教育,人格教育,美学,人际交往知识,良好的生活习惯…… 都没有,都是空白。 再加上城市与农村的差异带来的冲击,学校和社会的差异带来的冲击,面临这样的心理困境,是正常的,不必过于焦虑。——这些东西,我们的教育中也是空白。 这些重要的东西,经济发达物质基础好,父母见识广的地方,可能可以通过家庭教育进行弥补(他们的问题本来就少),但鉴于目前的经济和教育水平,在我国绝大多数地区,都做不到。 我大学之后陷入困境,某种程度上,就是因为这些缺失的知识。 比如心理学,比如思维科学,最重要的两门课,如何保持心理康健,如何正确地进行思考,我们的学校教育中都是空白。 随着经济的不断发展,随着整个社会对于个体的逐渐重视,这个情况会有所好转,但是,我们毕竟来不及了。 所以延伸出来的,就是自我教育的问题。 好在你还年轻,会读书,会工作,会上网,会来知乎学习,会自我教育,就不算晚。 2013年11月3日,我在某笔记里写下一篇名为《五年多的成长》的日记,里面写到毕业后才意识到的,自己所面临的困惑。 六种困惑,其实都是知识的空白而已。 1、男女之惑——对于情感的知识 2、心理之惑——心理学 3、性格之惑——我是什么性格以及为什么是这个性格 4、方法之惑——为什么一腔真心、无数努力却做不成事 5、自我之惑——我是不是没有自我,为什么没有自我,如何建立自我 6、方向之惑——未来要怎么走 其实这些问题,通过心理学和思维科学的学习,在毕业之后的五年里,我基本都有了较为清晰的阶段性认识。 问题是,在之前的22年里,我不知道这些知识。 自我教育,毕业之后的自我教育,才是人生成长的关键。 这是对知识空白问题的解决。 2、知识技能化 我们学校中学习的,都是知识,但对于个人来说,知识不转化为技能,就无用。 知识当然是伟大的,那是人类百万年进化的结晶,但是,我们必须意识到,你的知识只有转化为技能,才拥有了价值。 你的价值,附着于你的技能之上。 你是律师,你要会打官司,能打赢官司,才能赚到钱,体现个人价值。 你是医生,你要会治病,能治好病,才能赚到工资,体现个人价值。 你是警察,你要会维持治安,打击犯罪,才能赚到工资,体现个人价值。 …… 你说我有知识,但是我什么都不干,那就只好饿死,因为你没有通过技能体现出你的价值来。 当年明月研究了多年明史,如果他不写出《明朝那些事儿》,就无法证明自己的价值。——他把明史的知识技能化了——转变成了一本书。 郎朗学习了多年钢琴,如果他不去参加比赛获奖不去表演,就无法证明自己的价值。——他把钢琴弹奏技能化了——转变为一首首曲子。 你要把你学习到的知识转化为对这个社会有价值的技能,这才有用。 还是自己的例子,经过三年的锻炼,我基本上掌握了公文写作的技能,所以现在很崩溃,写稿子写讲话稿写的脑子想炸了,但是我的知识(文字知识,政治知识,写作知识,专业知识,部门知识……)转化为了技能(公文写作)。 所以,你就可以靠技能吃饭了,有了这个技能,虽然并不是多大的笔杆子,但毕竟有了自己的利用价值,所以领导对自己还不错,提拔的时候也会考虑,不至于让你做凉板凳坐很久。 家有万贯不如一技傍身,就是这个意思。 你学了那么多知识,可否能够转化为某种对这个社会、对别人有价值的技能? 技能远大于知识。 技能能吃饭,知识不行。 技能能发家,知识不行。 切记切记,要将知识转化为技能。 比如:你看了那么多电影,一肚子电影的知识,可有没有想过写剧本? 写剧本,就是技能。 另:会考试也是一个技能啊,而且是很厉害的技能,一次没考上怕什么,多考几次就是了。 延伸问题: 技能的门槛。 你说我有技能啊,为什么还是没价值? 可能是你自己的技能没有建立高门槛,随便就被别人比下去了。 这是个高度竞争的社会。 二八法则。 所谓20%的人赚走80%的利润,就是因为人家建立了高门槛。 1、高门槛不一定需要知识,人家资本雄厚,同样是高门槛,人家脸皮够厚,同样是高门槛,知识只是一个参考因素。 2、在知识—技能这个维度,建立高门槛需要精确定位市场、研究规律、不断实践、积累经验、建立细节体系——建立你自己的高门槛,就能享受相对高的回报,因为你的价值也是相对高的。——这需要时间,需要思考,需要不断改进、需要耐心。 3、耐心本身就是一个高门槛,这个世界上,聪明人很多,耐心的人,却真的不多。 4、知识很重要,要充分利用(别小看考试能力,你知道多少领导家孩子想要进公务员系统却考不进来吗?),尤其是当你只拥有知识的时候,但问题是,不要过于夸大知识的作用,而且,你所拥有的知识,并不一定有价值。 ...

August 7, 2022 · 1 min · Rancho

实习记录与总结

到今天为止(2022\08\07),我的暑假实习就要接近尾声了,我想,记录一下我这一个多月的实习经历吧,毕竟这是自己的第一份正式工作;

August 7, 2022 · 1 min · Rancho