icore

【STM32F4】【银杏科技ARM+FPGA】iCore3移植RT-Thread--准备工作

馋奶兔 提交于 2020-12-18 04:14:43
一、 初始RT-Thread RT-Thread,全称是 Real Time-Thread,顾名思义,它是一个嵌入式实时多线程操作系统。以下我们就简称RTT,RTT是一款完全由我们国内团队开发的嵌入式实时操作系统,它诞生于2006年,最初源于对当时小型RTOS现状的诸多不满,RTT要打造一个精致而优雅的操作系统。从最初的V0.0.1发布,历经十几个年头的沉淀到今天的V4.0.0的发布,它正演变成一个功能强大、组件丰富的物联网操作系统。 RTT支持任务抢占,STM32默认支持优先级范围是32,支持多任务(线程)轮转调度,可以通过信号量、互斥量、事件集进行线程间同步,通过邮箱、消息队列、信号进行线程间的通信。RTT也支持动态内存、中断等管理。 二、 辅助工具 2.1、Env简介 Env是RTT推出的开发辅助工具,针对基于RTT操作系统项目工程,提供编译构建环境、图形化系统配置及软件包管理功能,其内置的menuconfig提供了简单易用的配置剪裁工具,可对内核、组件和软件包进行自由剪裁,使用系统以搭积木的方式进行构建。   2.1.1 准备工作   在电脑上首先安装好git,软件包管理功能需要git的支持。   git下载地址: https://git-scm.com/downloads   下载后一路next安装,安装完成测试是否安装成功。按下win+R键,打开cmd,输入git

【STM32F4】【银杏科技ARM+FPGA】iCore3移植RT-Thread--IWDG看门狗

℡╲_俬逩灬. 提交于 2020-10-27 03:26:40
  单片机系统在外界的干扰下会出现程序跑飞的现象导致出现死循环,看门狗就是为了避免这种情况的发生。看门 狗 的作用就是在一定时间内(通过定时计数器实现)没有接收喂狗信号,便实现处理器的自动复位重启。 一、 通过CubeMX开启IWDG 1.1 我们打开../BSP/STM32/STM32F407_gingko_iCore3/board/CubeMX_Config来进行配置,直接点击 Syst em Core下的IWDG,在Mode中将Activated选中即可。配置完成后点击CREATE CODE。 1.2 CubeMX生成工程后,只保留红色方框内的文件,其他的两个文件夹可以删除掉。 1.3 复制刚生成的src文件夹main.c文件夹中的函数SystemClock_Config(void)到board.c。这里内核初始化时要 调用该函数进行时钟配置。 二、 修改Kconfig文件,在menu "On-chip Peripheral Drivers"下增加menuconfig菜单中的WDT选项 三、 在Env图形配置工具中开启iwatchdog 打开Env工具,使用menuconfig配置工程,路径为:Hardware Drivers Config -> On-chip Peripheral Drivers ,空格选中即可。 在Env中输入命令:scons --target

【STM32F4】【银杏科技ARM+FPGA】iCore3移植RT-Thread--内核之互斥量

邮差的信 提交于 2020-08-11 09:01:53
一、 互斥量的引入   互斥量类似于ATM取款机:当有客户进入的时候,将取款机门锁住,其他客户在外面等候。当里面的客户出来时,将门打开,下一个客户才可以进入。   由此,互斥量与信号量的工作机制就比较相似,其实,互斥量是特殊的二进制信号量。信号量用于线程的同步,好比交通灯,线程只有在获得许可的时候才可以运行,强调的是步骤;互斥量用于线程的互斥,就像一把锁,只有获取钥匙的线程才可以运行,强调的是许可和权限。   互斥量只有两种状态,开锁或闭锁。当有线程持有它时,互斥量处于闭锁状态,由这个线程获得它的所有权。相反,当这个线程释放它时,将对互斥量进行开锁,失去它的持有权。当一个线程持有互斥量时,其他线程将不能够对它进行开锁或持有它。 二、 互斥量和信号量的相同之处 1,创建时,线程阻塞排序均可以选择优先级或先进先出方式。 2,线程阻塞时间均可以选择直接返回、挂起一段时间、永久等待。 三、 互斥量和信号量的区别 1.互斥量用于线程的互斥,信号量用于线程的同步。 2.互斥量值只能为0或1,信号量值为非负整数。 一个互斥量只能允许一个资源访问。信号量可以实现多个同类资源的多线程互斥和同步。 3.信号量可以由任何线程释放,但互斥锁只有获得了其控制权的线程才可以释放,即:只有“锁上”它的那个线程才有“钥匙”打开它。 4.信号量可能导致线程优先级反转,而互斥锁可通过优先级继承的方法解决优先级反转问题

【STM32F4】【银杏科技ARM+FPGA】iCore3移植RT-Thread--RTC

血红的双手。 提交于 2020-07-28 07:27:14
RTC(Real-Time Clock)实时时钟可以提供精确的实时时间,可以提供时钟日历的功能。目前实时时钟芯片大多采用精度较高的晶体振荡器作为时钟源。iCore3 RTC外加电池供电,为了在主电源掉电时还可以工作。RT-Thread的RTC设备为操作系统的时间系统提供了基础服务,面对越来越多的loT场景,RTC已经成为了产品的标配。 一、 使能RTC ,选择时钟源 1.1 我们打开../BSP/STM32/STM32F407_gingko_iCore3/board/CubeMX_Config来进行RTC使能配置,其他参数不予更改。配置完成后点击CREATE CODE。 1.2 CubeMX生成工程后,只保留红色方框内的文件,其他的两个文件夹可以删除掉。 1.13复制刚生成的src文件夹main.c文件夹中的函数SystemClock_Config(void)到board.c。这里内核初始化时要调用该函数进行时钟配置。 二、 打修改Kconfig 文件,在menu “On-chip Peripheral Drivers” 下增加RTC 选项 2.1打开../BSP/STM32/STM32F407_gingko_iCore3/board/Kconfig: 2.2点击保存,打开Env工具,输入menuconfig命令,使能RTC: 2.3保存退出,输入scons --target

【STM32F4】【银杏科技ARM+FPGA】iCore3移植RT-Thread--PWM呼吸灯

喜欢而已 提交于 2020-04-30 13:45:56
  PWM(Pulse Width Modulation , 脉冲宽度调制) 是一种对模拟信号电平进行数字编码的方法,通过不同频率的 脉冲使用方波的占空比用来对一个具体模拟信号的电平进行编码,使输出端得到一系列幅值相等的脉冲,用这些脉冲来 代替所需要波形的设备。 一、 配置TIM的相关GPIO,选择时钟源 1.1 我们打开../BSP/STM32/STM32F407_gingko_iCore3/board/CubeMX_Config来进行定时器的配置,我们 以TIM8通道1为例,注意这里仍然是只配置IO,其他参数不予更改。配置完成后点击CREATE CODE。 1.2 CubeMX生成工程后,只保留红色方框内的文件,其他的两个文件夹可以删除掉。 1.3 复制刚生成的src文件夹main.c文件夹中的函数SystemClock_Config(void)到board.c。这里内核初始化时要 调用该函数进行时钟配置。 二、 修改Kconfig文件,增加menuconfig菜单中的PWM选项 三、 添加PWMn_CONFIG定义 四 、 添加PWM软件包 打开Env工具,使用menuconfig配置工程,路径为:RT-Thread online packages---> miscellaneous packages---> samples : kernel and components

【STM32F4】【银杏科技ARM+FPGA】iCore3移植RT-Thread--ADC电源监控

做~自己de王妃 提交于 2020-04-22 01:17:23
一、 配置ADC响应的GPIO   ADC是A/D转换部件,单片机不能直接处理模拟量,所以需要ADC将模拟两转换为数字量后进行处理。在使用单 片机进行模 拟数据处理的过程中,ADC至关重要。   1.1 在STM32F407IGT6中分别是PC4(ADC1_IN14)、PC5(ADC1_IN15)、PF5(ADC3_IN15)、PF6(ADC3 _IN4)、 PF7(ADC1_IN15),我们 打开../BSP/STM32/STM32F407_gingko_iCore3/board/CubeMX_Config来 进行ADC IO配置, 注意这里仍然是只配置IO,其他参数不予 更改。配置完成后点击CREATE CODE。   1.2 CubeMX生成工程后,只保留红色方框内的文件,其他的两个文件夹可以删除掉。 二 、 修改Kconfig文件,增加menuconfig菜单配置中ADC选项 三、 打开menuconfig,使能ADC 四、 使用scons命令生成MDK5工程,打开并进行编译 五、 烧录进iCore3核心板   烧录进去后我们可以发现能够找到ADC设备。例如读出通道14的值是0x52C,将其转变成模拟量:(1324/4096) *2.5*6=4.848(V) 六、 源代码   源代码下载请移步链接: 至此,ADC设备驱动添加完毕,并正确读数。 来源: oschina 链接:

【STM32F4】【银杏科技ARM+FPGA】iCore3移植RT-Thread--BSP制作

三世轮回 提交于 2020-04-19 14:39:05
一、 源代码下载 下载最新版的RT-Thread源代码: https://www.rt-thread.org/page/download.html 二、 工程文件简介 2.1 我们将下载好的源码进行解压,可以看到共有以下文件夹,在这里我们只关注bsp文件夹下的内容。其他文件夹的内容暂时先不理会,有兴趣的伙伴可以先了解一下。 2.2 打开bsp文件夹,我们发现RT-Thread支持n多种厂商的MCU,iCore3 ARM+FPGA双核心板ARM采用的是ST的STM32F407IGT6,因此在这里我们打开stm32的文件夹。 2.3 打开stm32文件夹,可以看到这些文件夹可以大致分为3类,分别为docs文件夹,docs文件夹为官方提供的一些图文教程(相当详细);libraries文件夹,libraries文件夹为STM32的HAL库文件及RTT编写的STM32一些常外设的驱动文件;剩下的为各开发板的最简单的bsp工程。 三、 BSP工程制作 3.1 CubeMX配置 需要创建一个基于目标芯片的CubeMX工程。默认的CubeMX_Config文件夹中,双击打开CubeMX_Config.ioc工程,注意看文件路径。 打开CubeMX选择自己板子上具体的芯片型号,iCore3是STM32F407IGT6。 打开RCC和SYS设置 ARM_LED引脚设置

spring事物应该注意的地方

落花浮王杯 提交于 2020-04-18 07:36:58
spring注解-@Transactional事务几点注意 这里面有几点需要大家留意: A. 一个功能是否要事务,必须纳入设计、编码考虑。不能仅仅完成了基本功能就ok。 B. 如果加了事务,必须做好开发环境测试(测试环境也尽量触发异常、测试回滚),确保事务生效。 C. 以下列了事务使用过程的注意事项,请大家留意。 1. 不要在接口上声明 @Transactional ,而要在具体类的方法上使用 @Transactional 注解,否则注解可能无效。 2.不要图省事,将@Transactional放置在类级的声明中,放在类声明,会使得所有方法都有事务。故@Transactional应该放在方法级别,不需要使用事务的方法,就不要放置事务,比如查询方法。否则对性能是有影响的。 3.使用了@Transactional的方法,对同一个类里面的方法调用, @Transactional无效。比如有一个类Test,它的一个方法A,A再调用Test本类的方法B(不管B是否public还是private),但A没有声明注解事务,而B有。则外部调用A之后,B的事务是不会起作用的。(经常在这里出错) 4.使用了@Transactional的方法,只能是public,@Transactional注解的方法都是被外部其他类调用才有效,故只能是public。道理和上面的有关联。故在 protected

supportPoor

元气小坏坏 提交于 2020-04-14 13:35:59
【推荐阅读】微服务还能火多久?>>> 问我 web-app\src\pages\supportPoor\poorList.vue <template> <ag-page id="poorList"> <dl-header name="贫困户清单"></dl-header> <main class="content list-block" ref="mainContent"> <div class="search-box" ref="sBox"> <div class="searchRelation"> <form action="#" @submit.prevent="searchDl"> <input type="search" ref='search' class="search-input" v-model="qryVal" placeholder="请输入贫困户姓名或身份证号" maxlength="18"> </form> <img class="img" src="../../assets/images/search_new.png" @click="searchDl" /> <img v-show="qryVal&&qryVal.length" class="search-delete" src="../../assets/images/clear.svg"

Openwrt1806在全志H3上移植(银杏icore5)

会有一股神秘感。 提交于 2020-02-26 03:51:10
写在前边 H3有很多开发板可以参考,主要有nanopi、orangepi等,这些开发板上大部分支持debian的系统,本着学习的目的,想运行一把openwrt。Openwrt18.06已经对全志的很多板子做了支持,这里主要参考了nanopi-m1-plus. openwrt开发环境配置及原理 下载openwrt,可以通过github拉取最新代码,网速比较慢也可以下载压缩包后再解压,最新已经有19.07,不过我这里用的是18.06。 git clone https://github.com/openwrt/openwrt.git (github直接下载) https://github.com/openwrt/openwrt (或者从网站下载压缩包) Linux系统,我用的是虚拟机安装ubuntu18.04LTS,4G内存+100GB硬盘,小了不够用。 参考openwrt readme应该更新一下源和软件包 /scripts/feeds update -a ./scripts/feeds install -a 有时候会出错,我这里一般是网络问题,速度太不给力,可以直接点击链接,用迅雷一类的工具下载会快一些。还有一种情况不是网络问题,类似依赖一类的问题,Openwrt邮箱列表有人提到再执行一遍这两条命令可解决,中间遇到过一次,果然如此。 4. 如果使用的是openwrt支持的板子