- 博客(58)
- 资源 (8)
- 收藏
- 关注
原创 vxWorks实时程序设计
本课程侧重讲解实时操作系统编程原理,其中的原理不拘限于vxWorks系统,同时强化操作系统编程的技术要点。课程从基本概念与工具使用入手,并深入讲解实时嵌入式系统编程的同步、互斥、通信、信号等概念及编程方法,并配备了例程可用于自己联系,也配备了课后习题,用于自我测试。学习本课程对于掌握其它实时操作系统有很大帮助,可以实现无缝过渡,授人以渔。清关注https://edu.csdn.net/course/detail/30758...
2021-03-09 08:26:56 422
原创 CMAKE应用基础(二)环境检测
一、检测操作系统CMake是一组跨平台工具。所以需要了解操作系统(OS)上执行配置或构建步骤。从而与操作系统相关的CMake代码,会根据操作系统启用条件编译,或者在可用或必要时使用特定于编译器的扩展。# set minimum cmake versioncmake_minimum_required(VERSION 3.5 FATAL_ERROR)# project name, in this case no language requiredproject(recipe-01 LANGUAGES
2022-05-21 22:16:59 464
原创 CMAKE应用基础(一)可执行文件及库
CMake是一个跨平台的安装(编译)工具,可以用简单的语句来描述所有平台的安装(编译过程)。他能够输出各种各样的makefile或者project文件,能测试编译器所支持的C++特性,类似UNIX下的automake。只是 CMake 的组态档取名为 CMakeLists.txt。Cmake 并不直接建构出最终的软件,而是产生标准的建构档(如 Unix 的 Makefile 或 Windows Visual C++ 的 projects/workspaces),然后再依一般的建构方式使用。这使得熟悉某个集成
2022-05-13 13:56:55 504 1
原创 zephyr系统简介及windows开发环境搭建
一、zephyr简介1、介绍Zephyr 项目是由 Linux 基金会主办的开源协作项目。它是一个小型、可扩展的实时操作系统 (RTOS),专为具有多种硬件架构的嵌入式平台而构建。它针对物联网 (IoT) 设备,这些设备通常具有严格的资源限制。因此,Zephyr 项目的目标是设计一个占用空间小、功耗低的模块化操作系统。此外,它高度重视网络安全,以保护连接到互联网的设备免受潜在伤害。由于其模块化,该软件可以很容易地针对不同规格的不同平台进行开发。它包含许多工具,例如传感器和设备驱动程序以及网络堆栈,使开发
2022-05-06 13:06:55 3932
原创 backtrader基础教程
backtrader基础教程课程链接:https://edu.csdn.net/course/detail/35621随着互联网技术的发展,这多行业正发生重大变化,包括传统的金融行业,也在不断地改变自己的工作模式与流程。自动化交易成为主流模式,并在美国占据了60%的市场,但是国内刚起步。量化交易能够从用先进的数据模型代替人为的主观判断,利用计算机从庞大的历史数据中筛选出能带来巨大收益的大概率事件来制定策略,极大的降低了市场波动对投资者情绪的影响,避免了市场狂热与悲观下做出非理性的投资决策。使用大数
2021-08-05 14:42:56 834
原创 使用numpy的金融函数来看看投资的神奇公式
一、NUMPY金融函数1、np.fv 终值函数numpy.fv(rate, nper, pmt, pv, when=‘end’)rate:利率nper:投入的次数pmt,每次投入值,投入则添负值。pv:初次投入值,也叫现值。以利率3%, 每季度支付金额10, 存款周期5年, 现值1000为参数, 计算终值:print(np.fv(0.03/4, 5 * 4, -10, -1000))# 1376.096332042、np.pv 终值的逆运算numpy.pv(rate, nper,
2021-04-20 15:19:33 2471
原创 (十)pandas数据组合
我们要分析的数据通常分布在几个表中,那么当我们要分析其中的数据时,需要把数据组合起来看。我们这时要对数据进行结构化处理,也被称为数据整洁。数据整洁需要满足的三个条件:1、每个观测值成一行。2、每个变量成一列。3、每个观测单元成一表。一个学生的每课成绩排成一行,所有学生的单课成绩放在一列上,所有成绩放在一张表上。分析信息需要组合多个表:公司信息与公司股票放在两张表,分析时需要组合起来看。连接数据追加行、列或者计算结果。使用 concat。连接行row_concat = pd.concat
2021-01-21 14:36:52 651 1
原创 (九)pandas绘图入门
本节只是展示各种绘图的意义与基本用法,知道绘图都有那些样式,可以用来做什么,采用的也基本是库自带数据,对于各种绘图的具体内容需要大家自行查找内容进行展开。数据可视化能更加直观,揭示数据中隐藏的信息。使用seaborn的数据源在使用seaborn data_load时无法获取数据的问题。目前加载有问题,可以到https://github.com/mwaskom/seaborn-data,下载下来后放入windows下的usr目录下,文件夹就命名为seaborn-data。anscombe = sns.
2021-01-19 22:16:26 333
原创 (八)pandas数据结构
除了掌握从文件加载数据外,我们还需要自己会创建数据。创建数据创建SeriesdataFrame是由多个Series组成,也可以把Series称为DataFrame的列。列中数据类型都是一致的,如果在创建Series时,使用不同的数据类型,则会将所有成员转成类型object,这是一个更加通用的名字。s=pd.Series(["bannana",42])上面的的列表数据是两种类型,一种是字符串,是object类型,一个是int型数据,为一数据统一,将全部设置成object类型。在创建Series时
2021-01-19 09:42:54 229
原创 (七)pandas dataframe基础
介绍pandas是用于数据分析的Python库,用来处理电子表格数据,并具备可视化与可再现性特点。整个电子表格在pandas中使用dataframe结构进行表达。每个dataframe可以看作是由多个列组成,这个列在dataframe中称为serie。每个列都有列名,也有行名,只是通常情况下没指定行名。每个行都有自己的行号,行号是从0开始的。如果没有指定行名,则将行号添入行名。行号是隐形索引。每个表格还有大小shape,返回行数与列数。加载数据在处理数据首先要加载数据,从各种数据文件中将数据读入d
2021-01-18 13:51:36 285 3
原创 (六)PYQT5高级界面控件
表格与树表格与树解决的问题是如何在一个控件中有规律的呈现更多数据。QTableView1、例子一个应用需要与一批数据进行交互,就可以使用表格的形式进行输出,这时就要用到QTableView类了。QTableView中可以使用自定义的数据模型来显示内容,通过setModel来绑定数据源。可用的模型数据如下所示:名称含义QStringListModel存储一组字符串QStandardItemModel存储任意层次的数据QDirModel对文件系统进行封装QS
2021-01-10 11:25:52 595
原创 (五)PYQT5的14种基本窗口组件
PYQT5提供了14种基本的窗口组件还有几种更高级的组件。在我们开始正式开始设计之前,需要清楚理解这些组件,如他们概念,他们继承关系,他们的用法,如何调整,如何控制。本节将开始逐一介绍这14种基本组件,只有牢固掌握这些,我们才能在设计时清楚思考。QMainWindowQmainWindow主窗口为用户提供了一个应用程序框架,它有自己的布局,可以在布局中添加控件。在主窗口中可以添加控制,比如工具栏,菜单栏和状态栏。创建窗口有三种:1、QMainWindow:这种窗口可以包含菜单栏,工具栏,状态下栏,标
2021-01-10 03:35:54 1613
原创 (四)PYQT5中菜单、工具栏、状态栏、资源的使用
添加菜单MainWindows是主窗口,主要包含菜单栏、工具栏、任务栏等。打开designe,“在这里输入”位置文字,然后回车即可生成菜单,对于一级菜可以输入"文件(&F)"样式字符来增加快捷键(ALT+F)。对于菜单我们需要给每个菜单定义相应的动作,也就是槽,这个可以在动作编辑器中实现:添加工具栏在designer窗体中,右键添加工具栏。在动作编辑器中添加条目,然后直接把条目拖到工具栏上。编译UI后,需要定义一个调用文件,也就是业务文件,并在文件中定义动作代码:import s
2021-01-08 15:25:29 600 1
原创 (三)PYQT5界面布局
前言很多书在谈PYQT5布局,都讲得很详细,这里也要写一写布局,毕竟它是程序设计中重要一部分。这部分内容看起来很简单,尤其在designer工具下使用界面绘制功能,这也将界面设计与逻辑设计想分离。但是要设计出美观的界面,可不是只是会使用布局器那么简单。在开始设计界面之前,我们不可能列举所有布局的情况,只是列举出各项功能是直观作用是什么,其实践放在后面的章节中反复体会,但是要记住***本章重要的参数意义***。使用designer设计UI1、在vscode中打开qt designer上面过程需要根据
2021-01-07 18:36:21 983
原创 (二)python编程中那些重要的事
一、作用域作用域是学习所有编程语言需要明确的一个概念。LEBG原则python作用域查找顺序总结为LEGB。在说明这个原则之前,我们先明确一个作用域分类:模块作用域,一个模块中的变量,需要通过模块名称引用,也称跨文件引用。内置作用域,内置模块预先赋值的好名称,如open.全局作用域,一个模块顶层的变量所处位置。外层作用域,这是一个相对概念,def定义的由内而外的作用域。局部作用域,def内定义的不包括被global声明的变量。。python在查找变量时顺序如下所示:#mermaid-
2021-01-03 18:55:22 263 1
原创 为什么要学习pyqt5
很多人认为学习python尤其是界面应用是程序员的事,更重要的深层次原因是自己畏惧学习程序,同时学习的时候不能与自己的职业,生活相结合,往往是为学习而学习,没有体会到学习python带来的乐趣,更不用谈python给生活带的来便利与快乐。但个人认为python及pyqt的界面设计是很多职业人应该掌握的生存技巧。如果你是一名嵌入式程序员的话,有这样一个场景。公司有对嵌入式文件系统、网络进行测试的功能。通常我们的做法是通过FTP上传多个文件,然后下载下来与原文件进行对比。试想这是一件多么枯燥的事情,你的测试覆
2021-01-02 15:23:07 1136
原创 pip安装慢的问题
目前使用pip直接安装库,大部分很慢,甚至安装不了。下面介绍几个国内的安装源:清华:https://pypi.tuna.tsinghua.edu.cn/simple阿里云:http://mirrors.aliyun.com/pypi/simple/中国科技大学 https://pypi.mirrors.ustc.edu.cn/simple/华中理工大学:http://pypi.hustunique.com/山东理工大学:http://pypi.sdutlinux.org/豆瓣:http://py
2021-01-02 15:02:51 235
原创 (一)认识PYQT5及开发环境搭建
认识PYQT5QT与PYQT的关系1、pyqt是QT框架的python语言实现。pyqt提供了一个设计良好的窗口控件集合,每个pyqt控件都有其对应的的QT控件。2、PYQT的核心是QT库,也是用C++编写。PYQT由于python的特性,其开发速度应该更加快,性能上能比qt慢一点,但是不会成为性能的瓶颈。相对于QT代码量而量,PyQt实现相同功能,其代码量只有原来的50%左右。3、PYQt向python程序员提供了完整的Qt应用程序接口函数,所以可以用PyQt实现Qt能做的所有工作。PyQt4
2021-01-02 14:29:25 924
原创 stm32 硬件I2C
在stm32f103上解决硬件I2C总是busy的问题问题在使用stm32f103的硬件I2C的时候,读写I2C总线总是busy,即下面的代码总是无法退出: while (I2C_GetFlagStatus(I2C1,I2C_FLAG_BUSY)) { ; }解决方法在将io管脚复用成I2C之前,先作为输出GPIO管脚,然后拉高,即下面代码里的i2c_pin_init,并且在每次读写的时候都调用一次i2c_pin_init,代码如下:#include "
2020-11-10 20:17:09 1381 2
原创 基于ubuntu 16.04.7的T3处理器开发环境搭建
T3处理器的开发包非常封闭,很多开发板的原代码都不提供。部分提供了源代码,但是对其中的配置及一些系统级配置级代码采用了封闭的静态库进行了封闭。有些厂家提供了一些虚拟机的开发环境,但是我个人不太喜欢,速度慢,使用网络存在问题。自己照文档搭建开发环境遇到了很多问题。在进行了多次实验与分析后,最终搞定,在这分享给大家。自己的计算机机安装UBUNTU 16.04.7 64位版本,这个就不说了。主要说一下环境的配置部分:首先需要安装:sudo apt-get install git gnupg ...
2020-09-15 16:22:23 558
原创 zynq交叉编译工具的安装
在进行zynq软件开发时,需要在系统上安装一款交叉编译工具。我使用的通常是linaro发现的cross tool。https://www.linaro.org/downloads/根据我们架构armv7,选择下载图上箭头的安装包,放在自己linux系统的某个位置,解压就可以。最后我们为了在使用交叉编译器时省去长路径前缀,可以把路径加入path 。编译~/.bashrc。这样就可以直接调用...
2020-04-16 14:47:04 1907
原创 ZYNQ7000 uboot实现两级引导及加载FPGA程序
ZYNQ7000 uboot实现两级引导及加载FPGA程序 这里主要是针对qspi flash启动,然后uboot源码为xilinx-v2019.2版本。一、启动介绍 zynq一般情况下,我们是通过xilinx的sdk生成fsbl,然后和fpga程序、uboot一起,生成boot.bin文件,最后固化到spi flash。这样,我们每次更新uboot或者fpg...
2020-03-05 17:04:43 5897
原创 vxWorks中vxbDelay不工作问题
在调试cyclonev平台SMP架构的eeprom驱动时,发现首次读写时,会使程序卡在vxbUsDelay(10)上,这个函数进入死循环,不具备延时功能。打开代码我们可以看到:要使用这个vxbDelay功能首先要定义INCLUDE_TIMER_SYS只有定义这个宏,vxbusrCmdline.c中才会调用vxbDelayLibInit写到这顿觉不用再写...
2019-09-17 12:57:38 582
原创 使用Jlink调试基于AliOS-Things的stm32
使用Jlink调试基于AliOS-Things的stm32一、原因 在准备玩AliOS-Things的时候,发现它里面提供的stm32的调试例子,都是用的stlink。二、环境搭建 请参考官方文档。三、使用Jlink调试 现在手里有一块stm32f4的开发板,型号是stm32f407,因为这里只是为了说明怎么使用Jlink进行调试,所以只需选一个相似的board...
2019-07-21 22:19:03 1639
原创 基于gnu arm eclipse环境与stm32移植freertos 10.1.1
关于如何搭建stm32的gnu eclipse环境,请参考前述博文。本文主要描述如何在gnu eclipse环境上移植freertos的步骤,具体原理请参考网文。本文移植两种芯片stm32f103及smt32f030。下面是freertos的源代码结构。soure文件中是freertos源代码,demo是各种芯片与工具的demo工程,比如stm32的mdk工程,但是没有gnu ec...
2018-12-08 20:07:16 2236 4
原创 gnu arm eclipse+jlink环境构建
GNU MCU Eclipse是一款基于gnu工具链的eclipse插件,可以开发arm与risc-v处理器平台软件,重要是这是一款免费软件,可以开发众多系统平台软件,同时可以采用eclipse亮丽的代码风格及增强可用性。下面就讲一下环境搭建、代码编写及调试的内容。1、准备材料eclipse:https://www.eclipse.org/downloads/GNU Arm Emb...
2018-11-17 20:34:32 2384 1
原创 vxWorks 串口输出进度效果
vxWorks有个tffs0格式化时输出格式化进度条:其实这个比较简单实现,在使用printf时加上一个\r即可。如下面代码:STATUS br(){int i = 0;while(i<100){printf("%d \r",i);taskDelay(1);i++;}}...
2018-10-30 09:56:13 671
原创 cyclone v hwlib使用问题
从demo工程开始我使用的是quartus 17.1,在直接使用demo工程时会存在编译问题。如果其它版本有问题,可以根据提示进行同样的修改。example工程在这个路径下:intelFPGA\17.1\embedded\examples\software我们拷贝一个工程Altera-SoCFPGA-HardwareLib-16550-CV-GNU.tar到我们自己的工程目录下解压然后...
2018-10-18 08:35:56 774 1
原创 cyclone v yocto开发环境搭建
工具下载下载poky下载poky,git clone git://git.yoctoproject.org/poky。使用git remote -r 查看远程分支:可以看到poky有许多分支,我们使用rocko分支,使用git checkout -b rocko origin/rocko创建本地分支rocko,并检出远程分支到本地分支rocko。git branch:确定本地分支...
2018-10-17 11:18:25 1226 3
原创 cyclone v cache原理、结构与使用
arm cortex a9 cache原理、结构与使用cache的概念与结构cache工作原理直接映射组相联cache的概念与结构cache是CPU核内一块小而快速的sram。cpu访问主存数据时,会首先查找这块cache,如果所以访问在数据在cache中,则直接从cache中取。cpu对高速缓存的访问要比外部主存快的得,但它只保存了主存的一部分,访问数据时,会造成访问时间的不确定性,也会造成...
2018-10-15 16:55:11 989
原创 如何写注释
写注释的关键指导原则就是尽量帮助读者了解跟作者一样多。1、不必要的注释如果能从代码本身看出的事实写注释。这样注释完全多余,从代码本身就可以看出代码的意思。也不能使用跟代码一样的意思重复注释,比如://Find a Node with the given 'name' or return NULLNode * FindNodeInSubtree(Node* subtree...
2018-09-20 09:32:36 6048
转载 C语言中: va_list 解决变参问题
VA_LIST 是在C语言中解决变参问题的一组宏,所在头文件:#include <stdarg.h>,用于获取不确定个数的参数 ——摘自百度百科 va_list 是一个字符指针,在代码中可以理解为指向当前参数的一个指针,这里有几个与 va_list 相关的常见的函数void va_start ( va_list ap, param );//对va_list变量进行初始化,将a...
2018-09-19 17:07:40 2124
原创 基于vxWorks的并行应用与设计笔记
1、多核应用SMP AMP BAREMETAL hypervisorSMP:在多个核上跑一个操作系统。优点:核间负载平衡, 性能线性提升,缺点: 应用程序的竞争条件,应用需要重新设计以利用多核能力,实时性不如AMPAMP:在多个核上分跑不同或者相同的多个操作系统。优点:可以使用不同的OS,冗余备份;OS性能高于SMP,更易于伸缩;错误隔离缺点:应用需要为AM...
2018-09-19 15:18:06 857
原创 vxWorks smp架构下互斥与同步
UP中关中断,挂起任务等对临界区保护的做法,在SMP中不再适用,因为它阻碍了同时执行理念,降低了CPU利用率。主要不同是在taskLock与intLock上。SMP提供四中同步与互斥锁:任务与中断级的spinLock 任务与中断级CPU指定 原子操作 内存屏障1、spinLock的互斥与同步UP(单核)中的信号量用于任务的互斥与同步在SMP中同样适用,而spinLock则是SMP中...
2018-09-19 11:29:29 2514
原创 代码要有美感
使用好的留白,对齐及顺序可以上代码更加养眼。有以下三个原则可以参考:使用一致的布局,让读者很快就习惯这种风格。 让相似的代码看上去相似。 把相关的代码分组,形成代码块。1、使用一致性风格编代码过程中要做过代码风格一致,而如果是在添加或者改代码过程中,则要保持与原有风格一致。比如说代码块的风格:void func(){int fVal = 0;}void fu...
2018-09-19 09:29:42 649
原创 不要使用容易被误解的名字
编码过程中要主动找到误解点,多问自己几遍该名字是否会被误解成别的意思。比如filter这个词,大家可以理解成过滤,但是就比较不清楚,过滤是剔除还是保留呢?1、推荐使用maxg与min来包含极限编程时,经常为用到最大值最小值宏的定义,但是很多时候从字面我们无法理解,该值是否包含在范围内。比如说我们定义购物车中可以存放在最大物品数。#define CARD_MAX_LIMITS ...
2018-09-18 17:38:31 666
原创 vxWorks SMP程序调度及亲和性
vxWorks smp环境下,可以同时调度N个最高优先级任务。1、CPU亲和性cpu affinity就是分配指定的中断或者任务给指定CPU,分为任务亲和性与中断亲和性。在SMP环境下,任务可以执行在任务一个CPU,这样通常能够很好的平衡各核负荷,但是如果想使用一个核专心处理信号处理任务,就可以把CPU分配为一个核,这样可以保证CACHE不被经常在核间切换时遭到冲刷,提高性能。可以使用如下...
2018-09-18 16:49:05 2197
原创 vxWorks SMP架构
1、vxWorks SMP架构硬件要求及特性首先vxworks SMP要求两个以上对称处理器,可以是多核处理器,也可以多处理器。其次要求处理器是可标识的,并且CPUS可以平等使用内存,外设。也就是说使用UMA架构。如上图所示:每个核访问相同内存系统,也就是说每个核没有自己的本地内存。每个核有自己的MMU,这样每个核就可以使用不同的虚地址执行任务。这方面主要是用的RTP程序上...
2018-09-18 15:06:14 2781
原创 vxworks 6.9下CANIO对SMP支持与CAN库编译问题
cyclone v SOC使用的bosch d can,vxworks6.9下有ti dcan驱动可以支持该IP。但是vxworks 6.9只支持UP架构的CAN驱动,对于SMP不支持。不支持的原因是CAN DEVIO中没有增加对SMP支持,体现的wcanio中使用了taskLock taskUnlock intLock intUnclock,而SMP是使用spinLock,所以为了使SMP架构使...
2018-08-23 17:26:18 1095
xlnx_zynq7k_zd.zip
2021-01-28
STM32F10x_StdPeriph_Lib_V3.5.0
2018-11-05
POWERPC UBOOT 分析与移植
2013-07-19
功角的测量技术
2012-03-23
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人