0%

前言:

环境介绍: AD20

正文:

在开始画PCB时,先用keepout线画一个矩形,把origin点设置到角落里。

image-20211015224400882

然后放置一个通孔(用于安装螺丝,来固定板卡),并设置通孔的坐标为一个(-3.3mm, 3.3mm),这个距离自己掌握,但必须x,y绝对值相等。

选中通孔,ctrl+c,出来绿色十字架时,点一下origin(以Origin)为复制参考点。点击另外的三个角,ctrl+v,出现绿色十字架时,按下空格来旋转,然后点击板卡的顶点。搞定!

之后在四个角画keepout圆弧,选择圆弧工具:

image-20211015225053567

出现绿色十字架,点击一下通孔的圆心:

image-20211015225331348

然后点击大圆矩形边相切的位置,如下图(我们只需要右下角的四分之一圆弧):

image-20211015225543912

之后删除多余的矩形的,就得到这样的了。

image-20211015225807361

然后选中这个四分之一圆弧,以通孔圆心为参考点,复制,粘贴处其余3个角。

搞定!

前言:

环境介绍: AD20

目的: 将PCB两面都铺上GND的铜,并放置via阵列。

正文:

方式一:

当把板子都布局,布好线后,需要铺铜时,P->G,然后选择铺铜的区域,围绕板子四周画一个矩形,画好后,鼠标右键2下,铺铜。

image-20211012164220558

铺好后手动去除板子四个角外部的铜,如下图所示,选择Polygon Pour Cutout,然后把不想要的铜圈起来即可。选中铜皮,将其设置为连接到GND net上。

image-20211012164527955

上面只是铺好了top layer的铜皮,下面来铺bottom layer的。选中top layer的铜皮,ctrl+c,然后鼠标左键点击一下我们设置好的origin point,切换到bottom layer,选择special paste,然后对话框设置一下,之后再选择一次origin point即可。之后可以再按照上述方式去除一下keep out外面的死铜。当然也可以在铺铜的设置选项里勾选“去除死铜”,但是这样会把板子里面的死铜也给去除掉(一般需要去除死铜),读者根据需要来选择吧。

image-20211012165114319

方式二:

当需要画多层板时,有时需要在每一层都铺上铜(前提是内电层是middle layer,不是plane,因为middle layer可以进行铺铜)。按照下面的方法操作:

  • 先在top layer铺上铜,按快捷键T-G-M进入Polygon Pour Manager,在这里面批量添加铺铜,并设置各个层的Net和名称。
  • 注意:放设置完每一层的Properties信息,想要Apply一下(不用点击OK),然后再在此窗口中点击Repour操作,否则会出现自己修改完了信息,但是铺铜时发现未识别到刚修改的那一层。
image-20211017144145209

放置via阵列:

下面开始放置一些小的via阵列,首先将“铜皮”隐藏,放置干扰我们视野。方法:ctrl+D,在view configuration窗口中隐藏Polygons。

image-20211012165745814

开始放置via阵列:

image-20211012165946987

先设置一下Net为GND,然后去勾选左上角的Constrain Area来选择放置的区域,根据需要设置间距,大小之类的参数。

image-20211012170045704

放好via阵列的样子:

image-20211012170315201

之后将铜皮取消隐藏即可,并布置丝印层。

1、环境介绍:

  • ZYNQ-7000 MZ7XA板卡
  • vivado 2020.1
  • vitis 2020.1

2、正文:

首先介绍一下镜像这个概念,下面是百度百科中的解释:

所谓镜像文件其实和rar ZIP压缩包类似,它将特定的一系列文件按照一定的格式制作成单一的文件,以方便用户下载和使用,例如一个操作系统、游戏等。它最重要的特点是可以被特定的软件识别并可直接刻录到光盘上。其实通常意义上的镜像文件可以再扩展一下,在镜像文件中可以包含更多的信息。比如说系统文件、引导文件分区表信息等,这样镜像文件就可以包含一个分区甚至是一块硬盘的所有信息。

额,理解了镜像的概念,接下来以在vivado vitis工程中的实际操作中学习BOOT.bin fsbl等内容。

vivado工程方面:

配置一下PS,生成一个HDL Wrapper.v,然后在Wrapper.v文件中加入一段4bit流水灯的代码,代码如下:

image-20211002162341338 image-20211002162649052

然后生成.bit文件,导出xsa文件,接下在切换到vitis开发。

vitis工程方面:

新建一个硬件工程,命名为run_led_hw_platform

image-20211002163328456 image-20211002163622228

指定刚vivado生成的xsa文件,上图中记得勾选Generate boot components,这个会在生成的硬件工程中产生一个zynq_fsbl文件夹,打开会发现有一堆fsbl相关的源文件,编译一下整个硬件工程,就会在下面图二的1处产生一个fsbl.elf文件。

image-20211002164114451

image-20211002164030549

接下来新建一个helloWorld的应用工程,命名为helloWorld,并编译一下。

image-20211002164344390

image-20211002164607517

接下来讲一下当我们成功固化程序到flash中后,ZYNQ板子启动的过程。

  • ZYNQ内部的BootROM存储有一段在CPU复位后固定执行的代码。称为stage-0启动代码。(这个ROM中的代码,掉电不丢失)

  • 这段代码用来配置一个ARM CPU和一些必要外设,从而能从一个启动设备中获取FSBL(first stage boot loader)执行。BootROM是一个ROM,不可写,PL的配置不是通过BootROM实现的。BootROM不能使用DDR和SCU,因为它们还没有初始化。

  • BOOT.bin是一个镜像文件,我们这里是将它存储在外部的QSPI-Flash中,BOOT.bin包含有fsbl.elf,PL部分配置文件(.bit),应用工程的可执行二进制文件(helloWorld.elf文件)

  • 当BootROM把flash中BOOT.bin中的fsbl装载到OCM后,接下来就开始执行fsbl了。

  • fsbl负责下面这些:

    image-20211002172924391

    对于基于zynq的嵌入式Linux系统,BootROM引导启动FSBL,FSBL引导启动U-Boot,U-boot引导启动Linux内核。

理解了上面这些,接下来继续创建Boot Image。

image-20211002171139341

上图中出现了好多文件,它们的关系详情请参考ug821的boot章节,这个BOOT.bin就是需要制作出来的镜像文件,它里面包含有下面fsbl.elf,run_lef.bit,helloWorld.elf文件。至于上面的helloWorld.bif文件,它是一个Boot Image Format 文件,用于制作BOOT.bin用的。

image-20211002173806240

制作好BOOT.bin后,接下来把它烧录到QSPI-Flash中:

image-20211002174044195

image-20211002174241139

在consol窗口中出现一系列消息后,就成功了。

image-20211002174408697

此时打开一个串口窗口,对板子重新上电,可看到流水灯在闪烁,串口打印成功。

image-20211002174626648

3、参考文献:


  • 板卡:Arduino uno
  • OS: win10
  • 开发环境:vscode + arduino插件
  • 工程作用:可以实现arduino的LED闪烁。

安装Arduino插件:

image-20211007192010599

目录结构:

image-20211007192231896

1、在vscode的用户配置文件settings.json中加入下面这些内容,用来对arduino插件做全局的默认配置:

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
"arduino.path": "G:\\Arduino", // arduino IDE安装的位置
"arduino.commandPath": "arduino_debug.exe", //这是一个上述位置中的exe文件
"C_Cpp.default.browse.path": [
"G:\\Arduino\\**",
"G:\\Arduino\\hardware\\tools\\avr\\avr\\include\\**",
"G:\\Arduino\\hardware\\tools\\avr\\lib\\gcc\\avr\\7.3.0\\include\\**",
"G:\\Arduino\\hardware\\arduino\\avr\\cores\\arduino\\**",
"G:\\Arduino\\hardware\\arduino\\avr\\variants\\standard\\**",
"G:\\ArduinoPrj\\libraries\\**"
],
"C_Cpp.default.includePath": [ //头文件引用路径
"G:\\Arduino\\**",
"G:\\Arduino\\hardware\\tools\\avr\\avr\\include\\**",
"G:\\Arduino\\hardware\\tools\\avr\\lib\\gcc\\avr\\7.3.0\\include\\**",
"G:\\Arduino\\hardware\\arduino\\avr\\cores\\arduino\\**",
"G:\\Arduino\\hardware\\arduino\\avr\\variants\\standard\\**",
"G:\\ArduinoPrj\\libraries\\**"
],
"arduino.logLevel": "info",
"arduino.allowPDEFiletype": false,
"arduino.enableUSBDetection": true,
"arduino.disableTestingOpen": false,
"arduino.skipHeaderProvider": false,
"arduino.disableIntelliSenseAutoGen": true,
"arduino.additionalUrls": [
"https://raw.githubusercontent.com/VSChina/azureiotdevkit_tools/master/package_azureboard_index.json",
"http://arduino.esp8266.com/stable/package_esp8266com_index.json"
],
"arduino.defaultBaudRate": 115200,

2、在.vscode文件夹下新建一个c_cpp_settings.json,并添加下面内容:

image-20211008094940783

上述中的includePath是需要认真设置的,这个不设置也行,在编写源文件时,会在#include的头文件下面出现红色波浪线,提示找不到文件之类的,例如下方这个。此时点击Quick Fix,把路径添加上就可以了,新添加的路径会自动出现在上方c_cpp_settings.json中的includePath中。

image-20211008095347411

3、在.vscode文件夹下新建一个arduino.json,并添加下面内容:

1
2
3
4
5
6
7
8
{
"sketch": "appMain.ino",
"port": "COM10",
"board": "arduino:avr:uno",
"output": "./build",
"debugger": "jlink",
"intelliSenseGen": "global"
}

4、编写源文件

请在github中下载。

5、编译烧录

写好源文件后,点击图中的A是编译,B是烧录,C是修改串口号,D是c_cpp_settings.json中的"name"

image-20211008100422545

6、搞定

工程文件有需要的话,请到Github中下载

另外,vscode-arduino官方的文档看这个链接

点赞

1、阿里云注册一个域名

2、设置域名解析

image-20211010150234294

3、添加记录,将域名指向自己的Github Page

首先获得自己的Github Page的IP地址。

1
ping username.github.io

然后添加一条记录,并按照下图所示设置,A处要填上刚获得的Github Page的IP地址。(这些相关知识点参见链接

image-20211010151013790

然后再新建一条记录,记录值要填自己的github.io

image-20211010151316911

设置好了后,应该是看到下面这样,需要看到两记录的状态是正常的才行:

image-20211010151518680

4、在Github page中设置

在自己的username.github.io界面,点击Setting,然后直接往下翻,找到GitHub Pages,并进入设置页面。

然后在下面设置域名,并勾选Enforce HTTPS(这个是有加密的,更好些,这样之后自己的网站链接前面是https开头的,如果这里是灰状勾选不了,是因为设置时有问题导致的。),A处就是自己的网站名字。

image-20211010152204074

5、在hexoSite工程文件中设置

在source文件夹下新建一个名称为CNAME的文件,无后缀。并键入下面这样的东西(记得修改为自己的):

1
2
www.zhaomengfei.xyz
zhaomengfei.xyz

6、然后就是正常的hexo的命令操作

1
2
hexo clean
hexo d -g

7、最终效果

这样,以后在浏览器中键入username.github.io zhaomengfei.xyz www.zhaomengfei.xyz时都会自动跳到https://www.zhaomengfei.xyz 的。

搞定~

一、前言

Arduino自带的IDE用在小的工程时还可以应付,但是面对大型工程时,就比较鸡肋了。本着想愉快的编写Arduinio的代码,让我们开始“折腾”吧~

开发环境:

  • win10
  • vscode + PlatformIO插件
  • Arduino 官方的IDE 1.8.16
  • 手头有一个Arduino UNO板卡

二、开始

首先下载、安装vscode。然后安装platformio插件,如下图:

image-20211007173650230

这个插件在使用IDE新建工程时,有些bug,就是特别慢,网上说是需要从github上下载一些东西,所以就很慢,而国内在使用github时有时候就是挺慢的。不过还是想用这么香的东西,肿么办呢?且听我慢慢道来。

使用IDE方式新建helloworld工程:

image-20211007174311073

首先点击如图所示的,更新一下pio core,下面是官方的介绍(官方文档链接),小伙伴记得仔细看官方文档呦。

image-20211007174451940

然后点击下面的New Project。

image-20211007174714097

image-20211007174912757

这里在选择工程路径时,有时加载会有些慢。然后点击底部的Finish,之后会加载一段时间,这个时间真是很奇怪,快时只需要几秒钟,慢时一个小时也搞不定。慢时我后面会讲如何应对。

image-20211007175216973

之后窗口中会出现两个相同的文件夹,需要右击任意删除一个(点击Remove folder from workspace)。之后save as一个workspace。

image-20211007175724408

处理之后一定要确保左侧的工作空间窗口中像上图这样,即一个workspace下面只有一个helloworld4的工作目录。如果是像下面这样嵌套的路径结构或者其他的结构,后面在编写源文件时,可能会出现头文件引用找不到的问题,即例如右侧B处的Serial下面有个红色波浪线,提示找不到该玩意儿在哪里。。。

image-20211007180030141

而这点是vscode中c/c++插件的一个bug(详情参见此链接),只要想办法绕过此bug即可。

image-20211007180741703

当然若实在是头文件引用错误的话,可以暴力点,关闭所有的错误提示,从此再无红色波浪线(设置看此链接)。

编写源代码:

下面是让LED灯闪烁,并发送数据到串口。

main.cpp:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
#include <Arduino.h>
#define onboard 13

void setup()
{
// put your setup code here, to run once:
pinMode(onboard, OUTPUT);
Serial.begin(9600);
}

void loop()
{
// put your main code here, to run repeatedly:
digitalWrite(onboard, LOW);
delay(1000);
digitalWrite(onboard, HIGH);
delay(1000);
Serial.println("Hello World!");
}

对了,arduino的代码其实就是C++代码,当然可以分成很多个子.cpp,.h来编写代码,参考链接1链接2

编译,烧录:

image-20211007181612585

上图中A是编译,B是烧录,C是打开串口工具。

image-20211007181950115 image-20211007182127853

下面是串口中的数据:

image-20211007182330671

搞定!

若通过IDE方式来创建工程,很慢的话,请接着往下看

首先看下这个链接

可以通过CLI的方式来创建工程,用vscode打开一个空文件夹,然后在terminal中敲入 pio project init --board uno,然后会在vscode中释放一堆一样的文件夹结构(这个过程会快一些吧),然后打开这个platformio工程,此时看下platformio.ini文件中是否正确,如下所示。

image-20211007183715444

现在新建并编写自己的源文件即可。

最后:

点赞