近日在阅读semtech的Lora-net/LoRaMac-node.此代码是LoRaWAN MAC层的node段的代码. 此代码中构建了一个定时器链表,此链表构建得非常的巧妙,现在和大家分享. 此定时器链表底层使用的是RTC的闹钟(Alarm)机制(将日历时间转换成时间戳时间),而非使用一个定时器产生一个固定的定时(比如1ms),然后定时刷新整个链表. 也就是说此RTC定时器并非产生一个嘀嗒定时器来定时检查定时器链表,而是直接根据链表你的表头来直接定时,一步到位. 用RTC的方法相比较嘀嗒定时…
stm32相关的配置 由于例程使用的主控芯片为STM32L151C8T6,而在本设计中使用的主控芯片为STM32L051C8T6,内核不一样,并且Cube库相关的函数接口及配置也会有不同,所以芯片的驱动所以做修改. RTC 的配置 此例程中,RTC被当做定时器使用,用于定时执行任务. 例程中,RTC使用外部LSE的32.768Khz的晶振作为时钟源, 而在本设计中,使用内部LSI作为RTC的时钟源,需要重新设置RTC的分频参数,使得程序正常运行. 注意MCU内部的低速晶振往往误差很大,在使用时很…
本文转载自:https://blog.csdn.net/zijie_xiao/article/details/50740950 tslib移植笔记(1)2016-04-25 tslib背景[摘自百度]:​ 在采用触摸屏的移动终端中,触摸屏性能的调试是个重要问题之一,因为电磁噪声的缘故,触摸屏容易存在点击不准确.有抖动等问题. Tslib是一个开源的程序,能够为触摸屏驱动获得的采样提供诸如滤波.去抖.校准等功能,通常作为触摸屏驱动的适配层,为上层的应用提供了一个统一的接口. 系统环境: Distr…
来自:http://www.openedv.com/posts/list/27697.htm STemWin5.22移植笔记 网上关于emwin的资料很少,我在移植的时候查了很多资料,对我一个感觉是好乱,有的代码改动的太多,这会让像我这种菜鸟无从下手,并且来源很乱,这让我决心写下这个笔记,来让新手快速入门emwin,高手当然飘过哦,这只限于我这种菜鸟罢了. emWin是segger公司出的一款图形化界面,非常好看,大家所熟悉的ucGUI也是这个公司开发的,ucGUI是XP的,而emWin是win…
先废话一小段 在将LoRaWAN的程序移植的过程中,调试发现了很多的问题. 做好记录工作,防止以后再踩坑 移植使用的是LoRaMac-node库,使用的是STM32L151CBT6 MCU,需要要移植到STM32L051C8T6 这个MCU上面. 开始正文 JLink的配置 由于第一次使用JLink(SWD方式),在一开始使用时,踩了几处坑: KEIL选择JLINK之后,点击设置进入,会出现一个对话框,要选择NO KEIL里面JLINK的 方式要选择SW,不然认不到芯片 Flash downlo…
前言 调试的过程中碰到的问题基本都是以前没有遇到过的,而且需要对整个协议栈及射频方面的工作流程较熟悉才能找到问题的原因,需要多读SX1276的数据手册以及与射频芯片的物理层通信例程和MAC层通信例程进行对比相结合. 正文 发送失败 LoRa 模块在进行 模式切换时,比如TX 切换到RX模式,需要先将设备切换到standby模式 CRC 校验失败,然后程序陷入死循环 按逻辑来讲,CRC校验失败,应该进行的操作是吧校验失败的这个数据包丢弃,然后重启接收机(芯片每次接收完成都应该重启SX1276) 但…
stm32相关的配置 由于例程使用的主控芯片为STM32L151C8T6,而在本设计中使用的主控芯片为STM32L051C8T6,内核不一样,并且Cube库相关的函数接口及配置也会有不同,所以芯片的驱动所以做修改. SPI 的配置 SPI使用的是STM32的硬件接口-SPI1 MOSI MISO 可以看到例程中,对SPI接口进行了再一层的封装,封装如下: /*! * SPI driver structure definition */ struct Spi_s { SPI_HandleTypeD…
2018年5月份开始在JZ2440上陆续移植了u-boot-2016.11.u-boot-spl-2016.11.linux-4.17和busybox-1.28.4,其中linux-4.17和busybox-1.28.4是当时官方最新的版本,以此作为学习linux两年来的总结.    遗憾的是,当时在移植过程中没有做每个阶段的笔记,只想尽快的完成.导致现在都已经忘的七七八八了,几乎连编译烧录都不记得怎么操作了.移植完成后,由于工作忙也一直没有把代码提交到github.刚好最近入手了一部新的笔记本…
标签(空格分隔):笔记 java其实已经将很多底层的数据结构进行了封装,虽然工作用不到,但是笔试和面试问的还是比较频繁的,而且这种面试题还是直接手撕代码,故专门总结一下. 1. 概念 1.1 链表(Linked list) 是一种常见的基础数据结构,是一种线性表,但是并不会按线性的顺序存储数据,而是在每一个节点里存到下一个节点的指针(Pointer).使用链表结构可以克服数组链表需要预先知道数据大小的缺点,链表结构可以充分利用计算机内存空间,实现灵活的内存动态管理.但是链表失去了数组随机读取的优…
链表作为最基础的数据结构,在许多高级语言上已经有了很好的实现.由于redis采用C语言编写,需要自己实现链表,于是redis在adlist.h定义了链表类型.作者对于这部分没什么好说,源码比较简单,如果这方面没有接触过的话,作者也耐心地推荐了几本书供参考.为了提高效率,这里的链表指的是双向链表,使得某一个元素访问它的前驱与后继的时间复杂度均为O(1). 不多说,进入正题,首先可以看到节点的数据结构的代码如下: typedef struct listNode { struct listNode *…
上一次,我们简单的测试了FreeRTOS的基于IAR EWARM v6.4和STM32F103VET6平台的Demo,对其有了一个基本认识.接下来我们开始自己移植FreeRTOS的过程. 1.创建一个“FreeRTOSTestProject”项目文件夹,并在其下创建FreeRTOS.Libraries.Project.User文件夹. 与无操作系统的项目一样User中存放应用文件:Project中存放项目文件:Libraries中存放STM32F1xx标准库文件.而在FreeRTOS文件夹中存放…
1.必要的准备工作 工欲善其事,必先利其器,在开始学习和移植之前,相应的准备工作必不可少.所以在开始我们写要准备如下: 测试环境:我准备在STM32F103平台上移植和测试FreeRTOS系统 准备FreeRTOS系统源码,从官网下载最新版本的程序包,最新为v9.0.0,地址:https://sourceforge.net/projects/freertos/ 从官网查看FreeRTOS每个函数的API说明,以及相应的例子.根据以往的经验,在学习过程中应该会经常查看,地址: http://www…
首先参考f107已经有的目录结构添加Lwip这一组,添加各种.c文件及.文件. 还有drive下边的很重要的eth.c 到此,工程编译通过.(刚开始,小编是一个一个 的比对...一个一个错误排查...好心累,,,完全可以打开f103相应的文件,找到文件位置,f407就参照文件位置将文件下边全部添加即可,大大提高效率) 接下来,打开lwip的宏定义,rtconfig.h里面. 照理来说就可以实现. 猜测还是io引脚配置错误. 索性就把开发板所带配置直接拷贝. 再将LAN8720reset. 就出现…
将rtt源码往stm32f407移植的时候,源码串口打印引脚设置有误,以下是源码引脚配置. 以下是原理图 可见配置有误.…
今天简单学习了下链表,待后续,会附上一些简单经典的题目的解析作为学习的巩固 首先要了解链表,链表其实就是由一个个结点构成的,然后每一个结点含有一个数据域和一个指针域,数据域用来存放数据,而指针域则用来存放下一个结点的地址. 一.链表的基本知识 1.先给出结点的定义. typedef struct Node *PtrToNode; typedef PtrToNode List; typedef PtrToNode Position;struct Node { ElementType Element…
说明:上一篇博客写了我在移植android驱动之TEF6606的苦逼遭遇,即驱动层向应用层提供接口支持,查找了两天的资料,不得不放弃,转而进行IIC下移植RTC设备的实验. 第一步:查找设备的数据手册可得到设备的从机地址.读写地址. 很不巧的是我在这里又卡了近一天,由于自己的硬件知识学得相当的那啥,哎,没办法,怨不得别人. 今天终于开窍了!!!!! 在开始条件(S)后,发送从机地址.地址是7bit,后面的第8bit是数据的读写bit,0表示写,1表示读.具体的看下图: 前面7bit就是从机地址!…
一:移植Boa(web服务器)到嵌入式Linux系统 一.Boa程序的移植 1.下载Boa源码    下载地址: http://www.boa.org/    目前最新发行版本: 0.94.13   (几年没更新版本了)    下载 boa-0.94.13.tar.gz, 注意:若从boa上下载的是boa-0.94.13.tar.tar,解压方式一样    解压: 2.生成Makefile文件   进入boa-0.94.13,直接运行src/configure文件 [tekkamanninja@…
用过51.AVR.Freescale.STM32,但是写程序一直没有用过实时操作系统,一是因为写的项目不大,二是不太想去看手册学东西.现在写的项目也算比较大,因为需要,所以就学一下,这样也不至于每次的程序都裸奔. 用的红牛STM32开发板(很久之前的板子,STM32F103ZET6芯片) 首先下载官方的库,还有uc/OS的源码.建立好工程后,添加UC/OS.如图 注意os_cfg.h 和 app_cfg.h 在源码里是没有的,一般是拷贝Micrium\Software\EvalBoards里面的…
本次实验参考自原子已经移植好的 LWIP(版本:1.4.1)模板来进行的,感谢! 由于要做的一个小项目要用到网络通信,而且想要加上 UC/OS-II 跑个系统,感觉 LWIP 这个轻量级的 IP 协议栈再合适不过了,故浏览了下官方的下载地址(http://ftp.twaren.net/Unix/NonGNU/lwip/),发现此时的最新版是 2.0.3,下载下来对比原子的 1.4.1 版本,觉得新版本有以下优点便于移植: 1.4.1 版本中: mempsize=memp_get_memorysi…
http://www.apkbus.com/forum.php?mod=viewthread&tid=1989 SDL(Simple DirectMedia Layer)是一套开放源码的跨平台多媒体开发库,使用C语言写成.SDL提供了多种图像.声音.键盘等的实现,可配置性与移植性非常高,开发者可以开发出跨多个平台(Linux.Windows.Mac OS X.Symbian.Widnows Mobiel等嵌入式系统,当然也包括今天要移植的平台:Android)的应用,目前SDL多用于开发游戏.模…
链表 定义 链表分为两部分,链表节点和持有链表的list结构. 每个链表节点包含前置节点指针,后置节点指针,节点值void*用于保存各种不同类型的值 list结构包含表头节点指针,表尾节点指针,节点数,节点复制函数dup,节点值释放函数free,节点值比对函数match   特性 双端,无环,同时持有链表的头和尾,记录链表长度,多态(链表节点值void*)…
1025 反转链表 (25 分)   给定一个常数 K 以及一个单链表 L,请编写程序将 L 中每 K 个结点反转.例如:给定 L 为 1→2→3→4→5→6,K 为 3,则输出应该为 3→2→1→6→5→4:如果 K 为 4,则输出应该为 4→3→2→1→5→6,即最后不到 K 个元素不反转. 输入格式: 每个输入包含 1 个测试用例.每个测试用例第 1 行给出第 1 个结点的地址.结点总个数正整数 N (≤).以及正整数 K (≤),即要求反转的子链结点的个数.结点的地址是 5 位非负整数,…
第一次发表博客,文章摘录于还不懂同学的专栏 lwIp的作者做了大量的工作以方便像我这种懒人移植该协议栈,基本上只需修改一个配置头文件和改写3个函数即可完成lwIP的移植.要改写的函数位于lwIP-1.3.0/src/netif/ethernetif.c中,你也可以用自己更合适的网络接口名来代替“ethernetif”.另外还有一个配置头文件,叫做lwipopts.h文件,它要放在工程目录下.这个文件来源于lwIP-1.3.0/src/include/lwip/opt.h头文件,是对整个协议栈的一…
链表 算法: 1.通俗定义: 解题的方法和步骤 2.狭义定义: 对存储数据的操作 3.广义定义: 广义的算法也叫泛型 无论数据是如何存储的,对数据的操作都是一样的 我们至少可以通过两种结构来存储数据 数组 1.需要一整块连续的存储空间,内存中可能没有 2.插入元素,删除元素效率极低. 3.查找数据快 链表 1.查找效率低 2.不需要一块连续的内存空间 2.插入删除元素效率高 专业术语 头指针 存放头结点地址的指针变量 头结点 数据类型和首节点的数据类型一模一样 头结点是首节点前面的那个节点 头结…
本来想介绍SX1276(与SX1278的操作完全相同,只是需要处理频段)的,但是这款芯片内容还是很丰富的,三言两语介绍不清,而且资料也很多就算了. 直接正面怼lorawan吧,怼到高地去,打爆lorawan的水晶,虐它的泉. https://github.com/Lora-net/LoRaMac-node/tree/master,这是lorawan节点的官方源码.我选型的MCU平台是STM32L051C8. 一个单片机项目不管多复杂,肯定与GPIO有关系,lorawan同样也是如此.但一个优秀的…
最近老板想做lorawan的项目,交给我了,我也应承下来了,但是!!!我TM连lorawan是啥子我都不知道啊啊啊啊啊! 真希望我女朋友可以看穿我的倔强,给我1千万,让我专心当舔狗,等等,我的女朋友???停车吧,老司机,说正经的. 由于不知道lorawan是啥子,我就去查咯,原来lorawan是建立在lora射频传输技术上的LPWAN(Low Power Wide Area Network)协议,好吧,问题又来了,lora又是什么? lora is the abbreviation for lo…
环境:rt1052单片机+16G tf卡 为什么使用littleFS? NXP官方SDK支持! 先进的损耗平衡功能(wear leveling)可提供最长的快闪及内存寿命及最大的使用量.因为FALSH的擦除/写次数有限制,通常是10万次. RAM和FLASH用的少,也就是内存和代码和精简.4. 掉电保护,设备突然断电,文件系统不会损坏.对比FATFS, fatfs使用固定的块做文件系统管理,多次读写后,整个系统就坏了,但是其他块其实没用多少次. 本人并不建议大家在flash上使用fatfs !…
看了野火ISO开发板移植的emWin,感觉不错,但是没有写移植教程,通过摸索与百度知道了移植的过程!下面和大家分享一下 emWin是segger公司出的一款图形化界面,非常好看,大家所熟悉的ucGUI也是这个公司开发的,ucGUI是XP的,而emWin是win7哦!而移植也要比ucGUI简单的多!…
链表提供了高效的节点重排能力,以及顺序性的节点访问方式,并且可以通过增删节点来灵活地调整链表的长度. redis中链表应用广泛,如list中就使用了链表. 每一个链表节点使用listNode结构标识(双向链表): typedef struct listNode{ //前置节点 struct listNode *prev; //后置节点 struct listNode *next; //节点值 void *value; } 链表大家都熟悉不做过多说明,再看下list结构的实现: typedef s…
链表基本概念        1.链表的基本形式        2.单向链表的完整实现            认识链表        链表= 可变长的对象数组,属于动态对象数组的范畴        链表是一种最简单的线性数据结构,之所以会存在有数据结构问题主要是解决亮点:存储的数据不受限制,查找速度快        对象数组有那些问题呢?            对象数组可以保存一组对象方便开发            对象数组的长度固定,而且数据的删除,修改,增加处理麻烦        所有的开发之…