<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[malcolm_110的博客]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/malcolm_110</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; malcolm_110]]></copyright><item><title><![CDATA[带参数传递的Verilog模块设计]]></title><link>https://blog.youkuaiyun.com/malcolm_110/article/details/121625902</link><guid>https://blog.youkuaiyun.com/malcolm_110/article/details/121625902</guid><author>malcolm_110</author><pubDate>Tue, 30 Nov 2021 10:14:28 +0800</pubDate><description><![CDATA[在Verilog设计中，模块化有利于提升代码的可重用性，从而提升设计的效率以及可阅读性。
有时候同一个模块在不同的地方被引用时，可能需要配置不同的参数值。
为了实现这一目的，我们可以在子模块中采用“parameter” 来定义。
下面举个例子：计数器做为子模块，负责计时。LED模块来调用计数器模块。
首先我们创建一个counter.v，带参数的变量  parameter CNT_MAX = 25’d24_999_999;
 module counter(Clk,Rst_n,led);



     inp]]></description><category></category></item><item><title><![CDATA[Linux 驱动开发之helloworld模块编译、交叉编译]]></title><link>https://blog.youkuaiyun.com/malcolm_110/article/details/109182532</link><guid>https://blog.youkuaiyun.com/malcolm_110/article/details/109182532</guid><author>malcolm_110</author><pubDate>Thu, 29 Oct 2020 15:17:41 +0800</pubDate><description><![CDATA[编译是在本地运行、交叉编译是在嵌入式板卡上运行，
这个两个编译过程的区别仅仅是Makefile的差异。
本文是在Vmware虚拟环境下，Ubuntu系统里进行的测试。
一、创建C文件
首先创建一个空的文件夹，创建hello.c文件，文件内容如下：
#include &lt;linux/init.h&gt;
#include &lt;linux/module.h&gt;
MODULE_LICENSE("Dual BSD/GPL");

static int hello_init(void)
{
printk(]]></description><category></category></item><item><title><![CDATA[Altera MAX II 工程移植到 MAX V上编译出错]]></title><link>https://blog.youkuaiyun.com/malcolm_110/article/details/109311441</link><guid>https://blog.youkuaiyun.com/malcolm_110/article/details/109311441</guid><author>malcolm_110</author><pubDate>Tue, 27 Oct 2020 15:11:05 +0800</pubDate><description><![CDATA[现在MAX II 系列的CPLD逐步停产，很多工程需要移植到MAX V系列上，最关键，MAX V系列的价格还很美丽。
MAX V系列器件相比于MAX II最大的特点是核心电压降低到1.8V，电压低有利于降低功耗，提升时钟频率。
在工程迁移的过程中，器件重新选择、引脚重新分配后，会报如下编译错误：
Error (21191): Supply voltage value 2.5V set to the 'VCCINT' power rail is illegal for the selected device.]]></description><category></category></item><item><title><![CDATA[iMX6q  Linux 交叉编译环境搭建]]></title><link>https://blog.youkuaiyun.com/malcolm_110/article/details/109218753</link><guid>https://blog.youkuaiyun.com/malcolm_110/article/details/109218753</guid><author>malcolm_110</author><pubDate>Thu, 22 Oct 2020 15:07:03 +0800</pubDate><description><![CDATA[添加 apt-get update 国内源
sudo vim /etc/apt/sources.list

添加阿里服务器
deb http://mirrors.aliyun.com/ubuntu/ xenial main
deb-src http://mirrors.aliyun.com/ubuntu/ xenial main
 
deb http://mirrors.aliyun.com/ubuntu/ xenial-updates main
deb-src http://mirrors.aliyun.]]></description><category></category></item><item><title><![CDATA[如何设置VMWare上虚拟机的IP地址]]></title><link>https://blog.youkuaiyun.com/malcolm_110/article/details/109221180</link><guid>https://blog.youkuaiyun.com/malcolm_110/article/details/109221180</guid><author>malcolm_110</author><pubDate>Thu, 22 Oct 2020 14:44:31 +0800</pubDate><description><![CDATA[在做嵌入式linux开发时，通常情况下，我们会从别人手上拷贝一个虚拟过来，因为上面已经搭建好了交叉编译环境。很多时候自己搭建环境也是一件痛苦的事。
在不做网络参数修改的情况下，拷贝过来的虚拟机网络是不通的，下面就说一下如何修改IP。
我们在PC上，一般是windows桌面环境，安装好VMware后（建议安装workstation full版本），VMware软件会自动设置虚拟网卡地址，我们可以不做改动。

下面几步就比较关键了。
1 VMware的主页点击编辑，然后点击里面的虚拟网络编辑器。

2. 然后在]]></description><category></category></item><item><title><![CDATA[《UNIX环境高级编程》第三版例程学习笔记及问题汇总]]></title><link>https://blog.youkuaiyun.com/malcolm_110/article/details/108297338</link><guid>https://blog.youkuaiyun.com/malcolm_110/article/details/108297338</guid><author>malcolm_110</author><pubDate>Wed, 23 Sep 2020 17:53:26 +0800</pubDate><description><![CDATA[问题索引1. 源码下载2. fatal error:   apue.h
1. 源码下载
http://www.apuebook.com/code3e.html
2. fatal error:   apue.h
示例一是myls.c
root@ubuntu:/# cc myls.c
myls.c:1:18: fatal error: apue.h: No such file or directory


提示这个错误说明没有找到apue.h这个文件，此时找到从第一步下载的源码，解压，然后把include下的a]]></description><category></category></item><item><title><![CDATA[LS1028A make 错误 sudo apt update 错误： Error in `appstreamcli‘]]></title><link>https://blog.youkuaiyun.com/malcolm_110/article/details/108577759</link><guid>https://blog.youkuaiyun.com/malcolm_110/article/details/108577759</guid><author>malcolm_110</author><pubDate>Mon, 14 Sep 2020 16:49:50 +0800</pubDate><description><![CDATA[在安装LS1028A的 OpenIL(open industry linux) 环境时遇到错误，
NXP官方的操作流程：
$ git clone https://github.com/openil/openil.git
$ cd openil
$ git checkout OpenIL-201908 -b OpenIL-201908
$ make nxp_ls1028ardb-64b_ubuntu_defconfig
$ make

遇到这个错误
./bootstrap: 4: ./bootstrap: a]]></description><category></category></item><item><title><![CDATA[VIVADO+ZYNQ7000入门四，PS与PL的AXI总线通信]]></title><link>https://blog.youkuaiyun.com/malcolm_110/article/details/108490361</link><guid>https://blog.youkuaiyun.com/malcolm_110/article/details/108490361</guid><author>malcolm_110</author><pubDate>Fri, 11 Sep 2020 18:18:02 +0800</pubDate><description><![CDATA[快速索引目标预备知识工程实例
目标
你好！
预备知识
我们
工程实例


创建一个空白工程，创建过程可以参考这里
https://blog.youkuaiyun.com/malcolm_110/article/details/107222944


Creak block design



添加zynq block



添加一个AXI_GPIO模块



添加点击自动布线

在弹出窗口中打勾



效果如下，我们可以看到系统会自动添加了一个AXI转换器，一端连接到了ARM核，一端连到了AXI的设备上，我们这里用的是]]></description><category></category></item><item><title><![CDATA[优快云 markdown 快速插入复杂表格的方法]]></title><link>https://blog.youkuaiyun.com/malcolm_110/article/details/108385137</link><guid>https://blog.youkuaiyun.com/malcolm_110/article/details/108385137</guid><author>malcolm_110</author><pubDate>Thu, 03 Sep 2020 16:04:19 +0800</pubDate><description><![CDATA[网上有教程提到，要把表格上传到一个在线格式转换网站，其实没必要这么复杂，简单几步搞定。
首先用Excel创建表格，上方不要留空行，左侧不要留空列。
其次选择文件另存为网页格式，注意下方有个选项，选择重新发布
最后打开保存的网页格式文件，在网页空白处点击鼠标右键，选择查看源码，在源码中复制从&lt;table&gt; 到 &lt;\table&gt; 之间的内容，粘贴到 markdown编辑器就可以啦。

...]]></description><category></category></item><item><title><![CDATA[什么是Makefile，以及uboot 的 makefile 语法分析（一）]]></title><link>https://blog.youkuaiyun.com/malcolm_110/article/details/108357146</link><guid>https://blog.youkuaiyun.com/malcolm_110/article/details/108357146</guid><author>malcolm_110</author><pubDate>Thu, 03 Sep 2020 12:52:54 +0800</pubDate><description><![CDATA[1、为什么要用 Makefile？
2、Makefile的编写规则。

3、Makefile常用的函数。

1、为什么要用 Makefile？
很久很久以前，人们不用 Makefile，生产一个程序，就只能手动敲命令。

一开始，程序很小很小，只有一个文件，只需要在shell里敲上：

    gcc main.c -o main

后来，程序越来越大，有非常多的文件，需要敲入这个：

    gcc main.c 1.c 2.c 3.c ... ... ... -o main

每次修改某个文件，都需要重]]></description><category></category></item><item><title><![CDATA[Uboot 编译失败问题]]></title><link>https://blog.youkuaiyun.com/malcolm_110/article/details/108367637</link><guid>https://blog.youkuaiyun.com/malcolm_110/article/details/108367637</guid><author>malcolm_110</author><pubDate>Wed, 02 Sep 2020 18:27:13 +0800</pubDate><description><![CDATA[编译失败问题汇总
索引一、已经有uboot源码，并且有 build.sh 的情况。
一、已经有uboot源码，并且有 build.sh 的情况。
首先Makefile 没有配置编译器，导致的错误，错误提示信息如下：
cc1: error: bad value (armv5) for -march= switch
Makefile:924: recipe for target 'u-boot.cfg' failed
make: *** [u-boot.cfg] Error 1
cp: cannot stat ]]></description><category></category></item><item><title><![CDATA[VIVADO+ZYNQ7000入门三，PS与PL的联合开发]]></title><link>https://blog.youkuaiyun.com/malcolm_110/article/details/108339193</link><guid>https://blog.youkuaiyun.com/malcolm_110/article/details/108339193</guid><author>malcolm_110</author><pubDate>Wed, 02 Sep 2020 09:50:53 +0800</pubDate><description><![CDATA[索引一、目标二、预备知识二、工程实例三、SDK开发四、下载运行
一、目标
熟悉PS的底层硬件控制、熟悉PS与PL联合开发。
二、预备知识
我们从Xilinx的官方文档UG585的第二章可以了解到，PS与PL数据交换主要就是通过AXI总线，此外还有时钟/中断、DMA等控制信号接口。详细的各部分功能框图如下。

UG585的第四章可以看到ZYNQ上ARM核的地址空间分配情况。

第14章可以了解到如何配置、读写EMIO。

二、工程实例
空白工程的创建请参照VIVADO+ZYNQ7000入门一博文。
工程建立好]]></description><category></category></item><item><title><![CDATA[VIVADO+ZYNQ7000入门二， 第一个PS程序，从创建到运行]]></title><link>https://blog.youkuaiyun.com/malcolm_110/article/details/108319966</link><guid>https://blog.youkuaiyun.com/malcolm_110/article/details/108319966</guid><author>malcolm_110</author><pubDate>Tue, 01 Sep 2020 10:24:50 +0800</pubDate><description><![CDATA[空白工程的创建请参照上一篇博文
VIVADO+ZYNQ7000入门一， 第一个PL程序，从创建到运行
PS系统在Vivado的架构下被当作一个IP core来调用，接下来我们先准备一个具备简单功能的PS系统，在新建工程窗口的最左侧，如下图所示，点击1，弹出窗口中，在2的位置输入IP的名称，然后点击OK

在弹出的新窗口中点击1处的图标，在2的位置输入zy搜索，可以看到ZYNQ的处理器系统block，双击。

稍等片刻，zynq的模块图标展现在我们面前！

双击它，目的是订制一些接口功能以及参数。接下来的工作]]></description><category></category></item><item><title><![CDATA[ARM交叉编译器gnueabi、gnueabihf 以及安装配置，helloworld测试]]></title><link>https://blog.youkuaiyun.com/malcolm_110/article/details/108252425</link><guid>https://blog.youkuaiyun.com/malcolm_110/article/details/108252425</guid><author>malcolm_110</author><pubDate>Thu, 27 Aug 2020 09:06:55 +0800</pubDate><description><![CDATA[如果我们需要编译一个运行在X86架构上的helloworld程序，只需要在linux系统下执行
gcc helloworld.c -o helloworld
如果要在X86主机上编译一个在ARM系统上运行的程序，就需要用到交叉编译器。
1. 编译器命名规则:
交叉编译工具链的命名规则为：arch [-vendor] [-os] [-(gnu)eabi]
arch - 体系架构，如ARM，MIPS
verdor - 工具链提供商，如飞思卡尔提供的工具简称fs
os - 目标操作系统，如linux
eabi -]]></description><category></category></item><item><title><![CDATA[Beyond Compare 4 过期河蟹方法大全]]></title><link>https://blog.youkuaiyun.com/malcolm_110/article/details/107983721</link><guid>https://blog.youkuaiyun.com/malcolm_110/article/details/107983721</guid><author>malcolm_110</author><pubDate>Thu, 13 Aug 2020 16:58:15 +0800</pubDate><description><![CDATA[网上有很多方法是针对安装版本的，我用的是免安装版，里面有个Patch.exe，但执行没有反应。当然，注册表里肯定找不到相关项，因为我是直接解压后就使用了。后来我发现，直接把解压文件夹删除，再解压一次就可以了，只有等30天后再验证一下更改BCUnrar.dll 名称的方法了。
下面是其它链接各种方法。
一、更改BCUnrar.dll的文件名，比如重命名为BCUnrar1.dll

二、如果是安装版本，删除注册表项
点击键盘windows图标+R，
1、在搜索栏中输入 regedit   ，打开注册表
2、删除]]></description><category></category></item><item><title><![CDATA[Verilog 常用操作符，以及$display系统函数 ModelSim 仿真]]></title><link>https://blog.youkuaiyun.com/malcolm_110/article/details/107784776</link><guid>https://blog.youkuaiyun.com/malcolm_110/article/details/107784776</guid><author>malcolm_110</author><pubDate>Tue, 04 Aug 2020 15:14:10 +0800</pubDate><description><![CDATA[一、算术操作符 Arithmetic Operators




Operator
Description




+
Add


-
Minus


*
Multiply


/
Divider



]]></description><category></category></item><item><title><![CDATA[UltraEdit 高亮显示设置方法以及简单使用教程]]></title><link>https://blog.youkuaiyun.com/malcolm_110/article/details/107765315</link><guid>https://blog.youkuaiyun.com/malcolm_110/article/details/107765315</guid><author>malcolm_110</author><pubDate>Mon, 03 Aug 2020 15:53:16 +0800</pubDate><description><![CDATA[UltraEdit  版本： 23.20.0.28

首先从官网下载wordfiles 文件
https://www.ultraedit.com/downloads/extras/wordfiles.html
保存路径为安装文件的wodfiles文件夹，比如我的安装路径：
D:\Program Files\IDM Computer Solutions\UltraEdit\wordfiles
打开UltraEdit，进行路径设置

下图中第3步需要留意，默认路径并不是软件的安装路径，需要更改为你自己的安装路径]]></description><category></category></item><item><title><![CDATA[从原理的视角，一文彻底弄懂FPGA的查找表（LUT）、CLB]]></title><link>https://blog.youkuaiyun.com/malcolm_110/article/details/107250777</link><guid>https://blog.youkuaiyun.com/malcolm_110/article/details/107250777</guid><author>malcolm_110</author><pubDate>Fri, 10 Jul 2020 17:14:17 +0800</pubDate><description><![CDATA[我学东西有个特点，喜欢从原理的层面彻底弄懂一个知识点，这几天想弄明白FPGA的查找表，但发现很多博文写的很模糊，看了以后仍然不是很明白。当然，可能是作者自己弄懂了，但没有站在新人的角度来详细的解释。通过多方资料查找，终于把原理彻底搞懂，在此记录一下吧。如果朋友看了我的文章后，仍然不明白的，欢迎随时交流。
背景知识
我最早接触逻辑门是在初中物理的一堂课上，当时课本的小知识栏讲了一个家用自动晾衣架，原理挺简单，就是晚上或者下雨天晾衣架可以自动收回。当时觉得这种与非门电路太奇妙了！
假如我们用A表示白天，用A‾\]]></description><category></category></item><item><title><![CDATA[VIVADO+ZYNQ7000入门一， 第一个PL程序，从创建到运行]]></title><link>https://blog.youkuaiyun.com/malcolm_110/article/details/107222944</link><guid>https://blog.youkuaiyun.com/malcolm_110/article/details/107222944</guid><author>malcolm_110</author><pubDate>Thu, 09 Jul 2020 11:40:19 +0800</pubDate><description><![CDATA[学习FPGA开发是普通硬件工程师往资深硬件工程师发展的必经之路，随着芯片的集成化越来越高，传统硬件工程师可以做的工作越来越少，是不是硬件工程师就没有前途了？
随着FPGA的集成度越来越高，以及应用市场对于大数据量/大运算量的需求与日俱增，ARM+FPGA的集成路线会成为未来的芯片发展的主流趋势。掌握这种异构平台的开发技能也是硬件工程师提升自身能力的途径之一。
先从一个简单的Verilog程序入手吧，今天的主要任务是熟悉vivado的操作流程。
工程创建
vivado软件的安装本文就不介绍了，下面假定你已经在]]></description><category></category></item><item><title><![CDATA[Arduino Nano + SSD1306 OLED 进阶（一）（ 打砖块游戏）]]></title><link>https://blog.youkuaiyun.com/malcolm_110/article/details/106942160</link><guid>https://blog.youkuaiyun.com/malcolm_110/article/details/106942160</guid><author>malcolm_110</author><pubDate>Wed, 08 Jul 2020 17:50:17 +0800</pubDate><description><![CDATA[硬件搭建：
Arduino Nano，SSD1306，6个按键，三个指示灯，一个蜂鸣器。

库文件：
Arduboy2

]]></description><category></category></item></channel></rss>