告别VM虚拟机,使用WSL安装交叉编译器
学习嵌入式Linux的首先是开发环境安装,在Linux平台上使用交叉编译器编译,但是VM虚拟机体积大,使用起来用户体验很不好,尤其是电脑内存捉急的。有没有可以替代的方法呢?答案是可以使用WSL什么是WSL?适用于 Linux 的 Windows 子系统可让开发人员按原样运行 GNU/Linux 环境 - 包括大多数命令行工具、实用工具和应用程序 - 且不会产生传统虚拟机或双启动设置开销。 WSL1和WSL2区别首先从官方的比较中可以看出除了跨操作系统文件系统的性能外,WSL 2 体系结构在多个方面都比 WSL 1 更具优势。但是假如需要使用的串口或者跨操作系统文件系统的话只能选择WSL1,笔者在这里只用到了wsl进行行编译,其他操作全部windows下解决,所以选择WSL2 安装WSL首先需要在电脑BIOS中打开VT具体步骤请按电脑品牌百度 自动安装步骤powershell输入以下命令(WIN+X) 1wsl --install 此命令将下载最新的 Linux 内核,将 WSL 2 设置为默认值,并安装 Linux 发行版。步骤简单但是默认安装在C盘,虽然只有几百兆,但...
Makefile
基本格式123目标...:依赖... 命令 ... 注意为Tab,不得出现空格 变量系统变量$(变量名) 自定义变量 = 延迟变量(不调用不改变) := 立即赋值 ?= 空赋值 += 追加赋值 自动化变量 $< 第一个依赖文件 $^ 全部的依赖文件,若目标中有重复文件将只保留一份 $@ 目标的集合 $% 当目标为函数库的时候表示规则中的目标成员名。若目标不是函数库文件则值为空 $? 所有比目标新的依赖目标集合,以空格隔开 $* 表示目标模式中”%”及其以前的部分 $+ $^类似但不主动除去 伪目标仅执行命令的目标与目录下存在的文件名冲突时,例如clean声明方式: 1.PHONY:clean 模式规则% 长度任意的非空字符串,当”%”出现在目标时,目标中的”%”决定依赖中的”%”值 条件分支123456ifeq (var1,var2)...else...endif 123456ifneq (var1,var2)...else...endif 函数模式替换函数patsubst$(patsubst %.c,%.o,x.c....
树莓派下岗再就业-ZeroTier内网穿透
需要截图的部分等新图床弄好后再补离校后进不了校园内网,但是万一需要的时候就很麻烦,于是我看向了边上的树莓派 zerotier安装注册账号https://www.zerotier.com/接着新建网络,类型选择PRIVATE 客户端安装Windows下载安装客户端,并右击添加网络,将上一步获得的16位Network ID填入注意复制的时候不要带换行或空格符号 Linux安装 1curl -s https://install.zerotier.com | sudo bash 加入网络 1sudo zerotier-cli join Network ID 配置树莓派的数据转发和路由控制查看IP转发设置0为关闭 12$ sudo sysctl net.ipv4.ip_forwardnet.ipv4.ip_forward = 0 打开内核IP转发1sudo nano /etc/sysctl.conf 将下列语句去掉注释并修改为1 1net.ipv4.ip_forward=1 修改完成后CTRL+O并回车保存,CTRL+X退出接下来激活配置 1sudo sysctl -p 再次查看IP转...
RTS、DTR与一键下载电路
单片机在通过ISP下载程序的时候一般我们只关注四根线,VCC、GND、RXD、TXD。最近在画一个ESP32的最小系统时发现很多开发板的USB->TTL电路却使用到了串口芯片的RTS、DTR管脚。 似乎有那么一丢丢眼熟,没错,原子的一键下载电路也长这个样 战舰V3一键下载电路 通过串口的RTS# DTR#管脚控制MCU的RST和BOOT0实现一键下载。上位机控制DTR#输出高电平,RTS#输出低电平,三极管均导通,通过三极管的反向作用,4148导通,RESET被拉低,系统复位,而BOOT0被拉高。一定延时后再将DTR#输出低电平,系统启动,此时因为BOOT0拉高所以程序进入ISP模式。需要注意的是这两个管脚与FlyMcu上设置的电平完全相反。 再回到51单片机,下载程序的软件无非两个,STC-ISP和普中的下载软件。STC-ISP下载异常的稳定,但是每次都需要冷启动。而普中的却不需要,翻阅下普中开发板设计 普中HC6800下载电路 这两个管脚控制Q1,再通过Q1控制MOS管导通与否实现对板子电源的控制。emmm,,,问题出在这个MOS管经常炸管,,,
给树莓派添加物理开关机按键
之前通过树莓派把打印机改成了共享打印机,但每次开关机就显得无比麻烦,直接断电鬼知道下次开机系统是不是正常运行的,每次关机都接个键盘实在太不优雅了 想法一:单片机模拟USB键盘发送关机指令,费时费力,直接pass 想法二:板子上有没有啥预留的电源控制接口,实际上拆开可以看到个RUN,用于控制重启,中文资料约等于0,抄来抄去都是那一篇,但是在检索的过程中发现了这个 有前辈已经整出来了 在/boot/config.txt添加以下: 12# 使用GPIO3(这里的GPIO指3BCM GPIO编号,也就是SCL1)作为电源键,下降沿为按下,上升沿为弹起,内部上拉dtoverlay=gpio-shutdown 保存关机后,试下将IO3和GND短接下,没错,直接开机,开机后再短接下,关机,完美! 在外壳上加个按键,建议把杜邦线拆了加焊一下再插上参考 给树莓派添加开关机键
Raspberry PI 3B+CUPS实现共享打印机
每次打印东西都要把电脑搬到打印机边上,实在过于麻烦,恰巧手里有块吃灰大半年的树莓派,干脆直接改无线打印机算了 把打印机通过USB线连接Raspberry PI,然后安装CUPS(一定要换国内源,具体参考开箱配置那一篇) sudo apt-get install cups 系统会自动安装相关依赖和打印机驱动,安装完后将用户加到lpadmin 用户组,然后开启 CUPS 的远程访问权限。 12sudo usermod -a -G lpadmin pisudo cupsctl --remote-any 执行完之后局域网内任何一个设备访问 Raspberry PI 的 631 端口,例如 http://192.168.1.XX:631。接了屏幕的建议直接在 Raspberry PI 上访问。 按CUPS界面引导配置CUPS:Administration->Add Printer,记得选中分享打印机,打印机的名字尽量简单(吐槽句,有个教程写成Description ,然后一堆复读机复读了这个错误,,,,),后面可能会用到,配置完后打印测试页试下能不能正常打印 安装samba来添加W...
浏览器抓取cookies
最近为了白嫖室友的某些网站会员(白嫖使人进步),首先某些网站登陆后下次再访问发现已经自动登陆了,这里面利用到了cookie进行标识用户,Cookie是一段不超过4KB的多个键值对组成,只要将有效的cookie抓取到就可以实现免密登陆。那么如何以最简单的方法获取cookies? 打开页面,按下f12 依次Network->过滤器(漏斗图标)->Doc,再刷新 以某易云为例,选择music.163.com,在Headers中向下寻找cookies即可
CC2530开发环境搭建
CC2530是个什么玩意?简单的说是256kB 闪存和 8kB RAM 的 Zigbee 和 IEEE 802.15.4 无线8051增强型MCU,能zigbee组网。 准备环境软件:IAR for 8051,SmartRF Flash Programmer(德州仪器官网有两个版本,注意选择老版本) 硬件:cc2530核心板(抢的),SmartRF04EB仿真器(捡的),万用板、led等元件(嫖的) P.S.开局一双手,东西全靠抢(逃 最小系统结构 GND—GND VCC—VCC DC—-P22 DO—-P21 CSN—P14 SCLK–P15 RESET–RES MOSI–P16 NC MISO–P17 连接接线说明 P.S.友情提示,一定要注意接线是否靠谱,杜邦线坑人 IAR开发环境设置打开IAR->创建workspace 创建工程,之后选择工程存储路径。 Ctrl+N新建文件,Ctrl+S保存文件(注意文件拓展名.c)右击工程添加文件 还需要设置项目属性,点击project->Options 注意输出文件后缀改为hex 编辑程序后编译(快捷...
2020\"TI\"杯省级大学生电子设计竞赛反思、总结
尽职尽责地完成任务,同时保持身心健康,不被过度加班折磨心智,也不因碌碌无为而愤世嫉俗 这次比赛不论获奖如何对我来说都是血亏,开学后先是准备期末考试,之后是准备电赛,直到九号特么终于放了一天假。结果晚上组委会提前放题目,长期的高压、失眠差点猝死,十一号早上吐胆汁,心率不齐过了半个月才恢复….以身体为代价换取的任何东西都是彻底的赔本买卖 本组选择赌A题——无线运动传感器节点设计,首先吐槽的是题目说明不清,题目要求将节点数据上传至服务器,想都没想直接上阿里云,第一天下午程序移植完成,结果组委会来一句不得连接外网,&*%#W*@!& 一天白干了 全题最蛋疼的就是这个心率波形显示了,使用心率发生器输出波形非常稳定,但是电极片贴到人身上就是另一码事了。电极粘贴情况、皮肤干燥情况、粘贴位置等均影响AD采集数值,Vpp能从50000直接蹦到400000不等。直到最后这个问题都没解决,另外,电极片长时间粘贴对人有害,而且难以撕下,胸口汗毛全被这玩意撕下来了。 在比赛过程中,为了解决所出现的问题,想尽一切方法解决,为了解决屏幕刷新跟不上数据采集问题,使用了消息队列,最后发现还...
C语言位移、不同长度赋值操作
移位问题向下函数传入0x00800000和0x00400000分别返回什么? 这还用想,当然返回原值了。然而实际却是返回了0xff800000和0x00400000 为什么0x00800000会返回0xff800000,而0x00400000返回了原值? 先看程序运行过程,首先temp先左移了八位,变成0x80000000,这是没有问题的,再右移八位后却变成了0xff800000。这是因为c语言对无符号类型数据的移位均为空位补零,但是对于有符号类型的右移却根据最高位决定,最高位为1则补1,反之则补零,所以0x00800000变换为0xff800000,而0x00400000返回原数值,但将数据类型改为无符号时则无此规律。 不同类型赋值问题已知cannle为u32,p_Temp为s32 分析下列赋值过程 首先u32和s32长度等长,区别在于最高位是否有符号位,这种赋值二进制数值不变,但是在打印时候按不同类型解析。 其次,将长值赋值给短值,截取低位,然后再赋给短值(即丢弃长值中高于短值最高位的所有值) 其实上述过程只是将int 32类型拆分开存储。发送给上位机后,上位机可将其视为...