spi

TMS320C6678开发笔记---IBL编译与分析3

陌路散爱 提交于 2020-11-20 11:23:20
9.3.7 makefile 修改 C:\MinGW\msys\1.0\ibl\boot_loader\ibl\src\make\makefile 9.3.8 iblinit.c 修改 C:\MinGW\msys\1.0\ibl\boot_loader\ibl\src\main\iblinit.c 将IBL_ENTER_ROM设为0,或者将函数iblEnterRom();注释掉 9.3.9 将MinGW命令行输出信息输出到文件 IBL_buildibl_6678 2>&1 | tee -a log3 9.3.10 编译小问题 将IBL_CFG_SPI_MAP_TABLE_DATA_ADDR_LSW擅自改成0x500了,导致一下问题出现(乌龙) C:\MinGW\msys\1.0\ibl\boot_loader\ibl\src\cfg\c66x\iblcfg.h 9.3.11 spiRom.dat 后期处理 修改文件:C:\MinGW\msys\1.0\ibl\boot_loader\ibl\src\make\makestg2 修改后编译现象为: 9.3.12 spiRom.map.pre 文件修改 IBL烧写到NOR flash中,原理和普通的app程序烧到flash中一样,生成的i2crom.ccs(spi和i2c模式下生成的均叫作此文件)文件

linux设备驱动程序--hello-world

夙愿已清 提交于 2020-11-20 07:06:34
linux字符设备驱动程序--hello_world 基于4.14内核, beagleBone green平台 PC端的设备驱动程序 有过电脑使用经验的人都知道,当我们将外部硬件设备比如鼠标键盘插入到电脑端口(通常是USB口)时,在windows系统右下角会弹出"安装设备驱动程序"的显示框,那么,为什么每个硬件都需要安装设备驱动程序才能使用呢? 首先,每个硬件都有相应的功能,鼠标的功能就是将鼠标的位移与点击状态转换成相应的数据,然后将数据传输给电脑,然后电脑根据收到的数据移动屏幕上的光标。 如果没有相应的鼠标驱动程序,电脑并不知道鼠标的接口以什么协议将数据传输过来,也不知道怎么解析相应的数据,所以当然电脑上的光标不会跟随鼠标的移动而移动,归根结底,鼠标的移动和电脑上光标的移动是两者间数据同步的结果。 同理,打印机也是一样,电脑将文件数据以某种格式传递给打印机,然后通过控制数据控制打印机的运行,打印机驱动程序基本上也是识别接收数据以及对数据的处理,这就是为什么一般外部设备都需要使用一根数据线与主机进行连接。 MCU中设备驱动程序 在基于MCU的普通嵌入式驱动程序开发中,并不会经常接触到鼠标、键盘、硬盘这一类的设备,多数是一些较为简单的传感器设备、小容量的存储设备等等,通常数据的传输使用的是spi、i2c、串口这一类的串行通信协议,通常一个设备驱动程序的开发就是这样的流程: 数据传输层

无MMU抢占式操作系统的抢占工作原理

给你一囗甜甜゛ 提交于 2020-11-20 03:46:42
关注+ 星标公众 号 ,不错过精彩内容 作者 | strongerHuang 微信公众号 | strongerHuang 操作系统对于初学者来说是一个很神秘的东西,里面很多原理摸不清楚,导致还没入门就放弃了。 本文就来从底层开始,详细讲述 抢占式 操作系统(大多数RTOS)的抢占原理。 包含: 线程基础原理 线程之间抢占 中断抢占线程 中断抢占中断 strongerHuang 1 运行多个线程 1.单核“单线程 ” 严格来说,单核处理器一次只能执行一条指令,也就是说只能“单线程 ” 。 (当然,多核处理器就不一样) 为了在单核处理器上运行多个线程,我们实际上需要定期在线程之间进行 快速切换 ,以便用户感觉多个线程在并行运行。 比如处理器执行两个线程,处理器实际在两个线程之间来回切换,如下图: 2.处理器在线程之间切换,它是如何做到的? 我们说的单核处理器是“单线程 ” 的,它 有一组寄存器,我们就叫这组寄存器属于一个“线程 ” 。 例如,计算两个数字的总和时: //假设我们有两个整数:a和b int c = a + b ; 实际发生的情况如下所示(当然,它取决于的MCU类型,但总体思路是相同): # MIPS反汇编: LW V0, - 32744 (GP) # "a" 的值从RAM加载到寄存器V0 LW V1, - 32740 (GP) # 值 "b" 从RAM加载到寄存器V1

WIZnet-io6Library下载及使用

风格不统一 提交于 2020-11-19 06:01:15
概观 io6Library是一个IPv6集成库,可以轻松集成和管理使用WIZnet硬连线双TCP / IP堆栈控制器(WIZCHIP)产品系列的用户应用程序。 io6Library用于管理依赖于用户特定MCU的代码,因此用户无需根据用户MCU执行io6Library的移植操作。(有关更多信息,请参见如何使用) 内容 io6Library 可分为以下三种类型。 Reigsters Defintion     通用寄存器:定义通用寄存器,如网络信息,模式,中断等。     套接字寄存器:定义SOCKET寄存器,如套接字模式,套接字通信,套接字中断等。 每个WIZCHIP I / O访问功能     基本I / O功能:通过WIZCHIP定义的HOST接口(SPI,BUS等)访问输入/输出的基本单元功能     公共寄存器访问功能:基于基本I / O功能访问公共寄存器的功能     SOCKET寄存器访问功能:基于基本I / O功能访问SOCKET寄存器的功能 WIZCHIP控制API,用于用户应用程序集成,管理和迁移     SOCKET API:与BSD SOCKET API一样,SOCKET API提供可以与socket socket commuuincation相关的函数集     额外的API:它提供支持用户应用程序集成的功能,无论WIZCHIP特定的Regiter /

Arduino Wireless Communication – NRF24L01 Tutorial(arduino无线通信---NRF24L01教程)

ぐ巨炮叔叔 提交于 2020-11-18 20:28:54
arduino下nrf24l01库文件及相关说明 库的说明文档 https://tmrh20.github.io/RF24/ 库的源代码github下载页面 https://tmrh20.github.io/RF24/ Arduino IDE直接安装库文件 直接在arduino库管理器中搜索“rf24”关键字 选择TMRh20作者的版本安装 发送的源码 /* * Arduino Wireless Communication Tutorial * Example 2 - Transmitter Code * * by Dejan Nedelkovski, www.HowToMechatronics.com * * Library: TMRh20/RF24, https://github.com/tmrh20/RF24/ */ #include <SPI.h> #include <nRF24L01.h> #include <RF24.h> #define led 12 RF24 radio(7, 8); // CE, CSN const byte addresses[][6] = {"00001", "00002"}; boolean buttonState = 0; void setup() { pinMode(12, OUTPUT); radio.begin(); radio

第一期_储存控制器与SDRAM

耗尽温柔 提交于 2020-11-18 20:06:23
内存接口概念 首先来分析下操作GPIO控制器和操作UART控制器两者的区别 如图是S3C2440是个片上系统,有GPIO控制器(接有GPIO管脚),有串口控制器 (接有TXD RXD引脚) 配置GPIO控制器相应的寄存器,即可让引脚输出高低电平;配置UART控制器相应的寄存器,即可让引脚输出波形。前者相对简单,类似门电路,后者相对复杂,属于协议类接口。类似的协议类接口还有iic、iis、spi等。 对于CPU是不管什么接口的,它只写相应的寄存器,由控制器根据寄存器的配置去控制具体的引脚。 那么CPU是如何访问各个不同的寄存器的呢? CPU只管发出一个地址,内存控制器根据该地址选择不同的模块,然后从模块中得到数据或者发送数据到模块中。 前面的GPIO/门电路接口、协议类接口,都不会把地址输出到外部,接下来的内存类接口,会把地址输出到外部,比如Nor Flash、网卡、SDRAM。 如图,SDRAM、DM9000网卡、Nor Flash都接在JZ2440的数据总线和地址总线上,CPU把数据和地址发送出去,然后内存控制器根据片选信号选择相应的设备接收地址和数据信号,互不干扰。 片选信号和地址的关系怎么确定? 这个是由2440芯片特性决定的。 当选择Nor Flash启动时,CPU发出的指令的地址范围处于0x0000000 - 0x08000000,内存控制器就会使nGCS0处于低电平

SOM-TL665x是TI系列多核架构的定点/浮点TMS320C665x高端DSP核心板

白昼怎懂夜的黑 提交于 2020-11-15 19:31:08
1.核心板简介 基于TI KeyStone C66x多核定点/浮点DSP TMS320C665x,单核TMS320C6655和双核TMS320C6657管脚pin to pin兼容,同等频率下具有四倍于C64x+器件的乘累加能力; 主频1.0/1.25GHz,每核运算能力可高达40GMACS和20GFLOPS,包含2个Viterbi协处理器和1个Turbo协处理解码器,每核心32KByte L1P、32KByte L1D、1MByte L2,1MByte多核共享内存,8192个多用途硬件队列,支持DMA传输; 支持PCIe、SRIO、HyperLink、uPP、EMIF16、千兆网口等多种高速接口,同时支持I2C、SPI、UART、McBSP等常见接口; 连接稳定可靠,80mm*58mm,体积极小的C66x核心板,采用工业级高速B2B连接器,关键大数据接口使用高速连接器,保证信号完整性; 提供丰富的开发例程,入门简单,支持裸机和SYS/BIOS操作系统。 图 1 核心板正面图 图 2 核心板背面图 由广州创龙自主研发的SOM-TL665x是一款基于TI KeyStone系列多核架构的定点/浮点TMS320C665x高端DSP核心板,采用沉金无铅工艺的8层板设计,专业的PCB Layout保证信号完整性的同时,经过严格的质量控制,满足多种环境应用。 SOM

基于UWB技术的DW1000芯片简单解析

瘦欲@ 提交于 2020-11-10 07:54:19
近些年来随着物联网和机器人技术的大发展,精确定位技术的热度也随之攀升。目前精确定位的技术有很多,如基于wifi、RFID、zigbee、超声波、UWB等技术都可以实现精准定位。由于技术的不同,精度也不尽相同,造假也不同。本文将讲述基于超宽带技术的定位系统的技术实现框架和流程,由于本文主要参考DECAWAVE公司出品的DW1000芯片相关技术问题,因此对DW1000芯片实现产品化具有推动作用。 自从UWB定位芯片DW1000推向市场,UWB定位终于有了竞争力的方案了,芯片方案的出台给了这个行业良性发展的基础,但是每个行业的发展都不是一番风顺的,UWB定位也一样。 UWB定位技术目前基本都是采用DW1000的芯片,实际上这个芯片集成的算法很少,就是发个脉冲信号,主要的定位算法都是需要做定位的集成厂商来自己研究和优化,各家公司的定位研究都不开放,导致开发的难度高,投入的人力大,而且定位的偶然性误差会较大,因此,用DW1000做定位系统很容易,但是做好了,一点都不容易。 国内研发的UWB定位系统的公司的技术也在迎头赶上,这点从微软室内定位大赛就可以看出,中国公司的成绩也是越来越好,当然国内做的比较大的几家都是没去过室内定位大赛的,是具体去了没得奖还是没敢去就不知道了。但是说明国内的初创公司在UWB定位的研究上还是有实力的,名气大的只能在行业里混的时间长点,别的也说明不了啥问题

阿里P8大佬熬夜10天,把所有Android第三方库整理成了PDF

空扰寡人 提交于 2020-11-07 12:33:20
缘起 随着互联网企业的不断发展,产品项目中的模块越来越多,用户体验要求也越来越高,想实现小步快跑、快速迭代的目的越来越难,还有应用之间的互相调用等等问题,插件化技术应用而生。如果没有插件化技术,美团、淘宝这些集成了大量“app”的应用,可能会有几个g那么大。 所以,当今的Android移动开发,不会热修复、插件化、组件化,80%以上的面试都过不了。 阿里P8大佬每天熬夜到凌晨一两点,花了将近半个月时间将Android热修复框架、插件化框架、组件化框架、图片加载框架、网络访问框架、RxJava响应式编程框架、IOC依赖注入框架、最近架构组件Jetpack等等Android第三方开源框架整合成了一套系统知识笔记PDF,长达1042页!相信看完这份文档,你将会对这些Android第三方框架有着更深入、更系统的理解。 由于文档内容过多,为了避免影响到大家的阅读体验,在此只以截图展示部分内容,1042页详细完整版的【Android设计思想解读开源框架】文档领取方式: 点击我的GitHub 即可免费领取 第一章:热修复 1、AOT/JIT & dexopt 与dex2oat 2、热修复常见问题之CLASS_ISPREVERIFIED 问题 3、热修复原理 4、Tinker 的集成与使用(自动补丁包生成) image image 第二章:插件化 1、Class 文件与Dex 文件的结构解读 2

评测|抢鲜体验飞凌Linux版LS1028A系列嵌入式开发板

﹥>﹥吖頭↗ 提交于 2020-11-06 08:53:25
FET1028A-C 核心板基于NXP公司的Layerscape LS1028A设计,是对Layerscape产品线系列化的完善。 LayerscapeLS1028A工业应用处理器包括支持TSN的以太网交换机和以太网控制器,可支持融合的IT和OT网络。两个功能强大的64位Arm®v8内核支持工业控制的实时处理,以及物联网中边缘计算的虚拟机。集成的GPU和LCD控制器使人机接口(HMI)系统支持新一代接口。 面向工业应用的Armv8双处理器 4端口时间敏感网络交换机 2个具有时间敏感网络功能的以太网控制器 GPU和LCD控制器 可配置的加密分流引擎 PCI Express CAN总线 Layerscape LS1028A功能单元框图 OK1028A-C接口图 OK1028A-C开发平台(CPU/1.5GHz+内存/2GB+eMMC/8GB)支持5个Ethernet网络:1个1000Mbps SGMIIHE 和QSGMII引出的4个1000Mbps,以及PCIe2.0、SATA3.0、USB3.0、UART、IIC、SPI等接口,板载一颗16M的QSPIFlash和一颗8GB的eMMC。OK1028A-C平台支持QSPI启动和SD/eMMC启动,支持TF卡 提供了1个标准3.5mm耳机口,以及1个喇叭接口,支持飞凌配套的LVDS显示屏。支持uvc摄像头、支持M.2接口的网卡、支持4G