- 博客(104)
- 资源 (28)
- 收藏
- 关注
原创 【CRC】CRC推导(四)算法优化
前面讲到模二除法,本节将模二除法的优化。优化一、首先我们以多项式为0x11021(实际上就是CRC16 CCITT)为例,根据模二除法规则,算法如下:模二算法每一次计算的余数都是比多项式少一个bit,最后的余数也是如此,因为最高位的1始终会被消除,因此,我们在计算时可以不用考虑高位。假设多项式还是0x11021,我们每次只需要处理0x1021,即16位寄存器的数据即可。...
2020-04-30 08:06:40
1448
原创 【CRC】CRC推导(三)字节查表与半字节查表
上节我们讲到模二除法,模二除法的操作是按位进行,每次移动一位,然后计算,算法要套2个循环,效率较低。由于异或运算有交换律和结合律。因此,我们再次看一下范例:传送数据为0xCF16(1100111100010110b),多项式为0x11021(10001000000100001b)为例,结果如下: 我们省略一些过程,将4次计算合并成一次。我们先计算蓝色部分,再将蓝...
2020-04-30 08:05:17
1988
原创 【CRC】CRC推导(二)模二除法
在讲模二除法之前,我们先看看按位异或运算。如下即二进制1101b异或1010b的结果为0111b。按位异或是一种二进制运算,只影响当前位,因此我们可以得出两个简单的定律:交换律和结合律。A⊕B⊕C=A⊕(B⊕C)例如:1⊕0⊕1与1⊕1⊕0及0⊕1⊕1的结果是一样的。以上定律对于后面查表推导有极大的帮助。模二除法并不是一个传统意义上的除法,它是一种二进制除法,二进制除法操作...
2020-04-30 08:03:28
4754
原创 【CRC】CRC推导(一)CRC简介
CRC是数据传输过程中的常见的一种校验方式,由于其算法简单,而且出错率极低,因而广为使用。工作中使用CRC算法非常多,不过一般由于项目紧急,仅仅只会应用,具体为什么这么算不求甚解。本文将推导CRC算法,从最初的模二除法到CRC优化、查表。在推导CRC算法之前,看了很多其它人的讲解,虽然有所启发,但是大部分都没有讲到最关键的两个地方: 模二除法新的数据是移位到CRC寄存器的最低位,为什么现...
2020-04-30 08:02:28
1910
1
原创 【飞思卡尔 MC9S12】BootLoader 上位机
上一篇:飞思卡尔 MC9S12】BootLoader 下位机本篇讲述BootLoader上位机开发。源码地址:https://download.youkuaiyun.com/download/u010875635/11692122此上位机采用WPF框架,C#语言开发,支持周立功的CAN设备和ValueCAN。由于手头上暂时没有硬件,无法实际演示,大家先凑合看示例图。注意,有很多人操作误区在...
2019-07-04 08:28:40
4713
9
原创 【飞思卡尔 MC9S12】BootLoader 下位机
上一篇:【飞思卡尔 MC9S12】内部D-Flash模拟EEPROM本篇讲述BootLoader下位机的开发。刚到新公司第三天就接了一个项目,搞到现在才局部完成,更新比较慢了。先上传源码比较实际,再介绍基本功能。源码地址:https://download.youkuaiyun.com/download/u010875635/11692136实际上搞定CAN通信和Flash读写,Bootlo...
2019-07-04 08:26:46
3962
3
原创 【飞思卡尔 MC9S12】内部D-Flash模拟EEPROM
上一篇:【飞思卡尔 MC9S12】内部Flash读写上一篇讲到内部Flash的读写,本篇讲述使用D-Flash模拟EEPROM。其实使用P-Flash也可以模拟,只不过D-Flash的Page更小(擦除复写占用更少时间),而且不会占用代码空间。最近刚换工作,一直比较忙,更新会比较慢。若是需要源码可自行下载:https://download.youkuaiyun.com/download/u010875...
2019-07-04 08:23:49
4654
2
原创 【飞思卡尔 MC9S12】内部Flash读写
上一篇:【飞思卡尔 MC9S12】PRM文件与内存映射(Flash、RAM、EEE)上一篇讲到PRM文件与内存映射,其中有个重要寄存器叫做GPAGE,可以全局访问所有地址范围,Flash操作也是基于这个地址。在讲述Flash读写之前,有一个重要概念要普及,就是Flash操作代码不能存储在被操作的Flash物理块中,例如我要擦除一个Flash中某一个扇区内容,这个擦除动作的代码不能存在这个F...
2019-07-04 08:19:14
5850
原创 【飞思卡尔 MC9S12】PRM文件与内存映射(Flash、RAM、EEE)
本篇介绍飞思卡尔MC9S12系列芯片基本内存映射知识,主要是其特有的分页机制。一般的小型项目可能很多人都不会去专门了解这些内容,但是对于大型项目(代码超过16KB 或 内部变量过多超过4KB),势必要在默认设置下修改能适配项目的配置,以便于能灵活使用。另外BootLoader的编写也是要了解这方面的内容才能进行。MC9S12(X)有2个大的系列,区别是带不带XGATE(有X后缀的是带有XGAT...
2019-07-04 08:14:49
5966
原创 【MPC5744P】S32DS中Processor Expert自动生成代码工具使用教程(五) FlexCAN使用
本篇开始讲解FlexCAN的使用方法,采用SDK自动生成驱动。新建工程CAN_Test,具体步骤不再重复,新建完毕,打开Processor Expert界面,在Components Library中添加flexcan,添加时会自动增加辅助模块(若是没有禁用其它版本SDK,则会弹出提示,此处会有多个版本供选择,不同版本兼容性可能有问题)。 添加完,在Components中我们可以看到...
2018-12-29 09:42:02
8038
17
原创 【MPC5744P】S32DS中Processor Expert自动生成代码工具使用教程(四) GPIO配置之点亮LED
一、新建项目新建一个S32SD项目,名称为led_test,芯片选择MPC5744P,SDK选择最新版本,注意不要选择FreeMaster,当前版本自动配置有些问题,我们后面手动配置。若是以后有更新,大家可以添加FreeMaster自动配置试试。二、Processor Expert配置新建项目完毕,我们会在项目最底下看到ProcessorExpert.pe文件,在菜单栏显...
2018-12-29 08:44:24
11385
12
原创 【MPC5744P】S32DS中Processor Expert自动生成代码工具使用教程(三) 多个版本SDK的处理
一般来说,安装完包含MPC5744P相关SDK的更新包之后,Processor Expert中会存在多个SDK,这在添加组件时会带来较多困扰,SDK之间交叉使用可能会出现问题,因此,我们要将不需要的SDK先禁用。以UPDATA7为例,里面包含了02-06的SDK,我们不需要,将其禁用掉。这样后面使用Processor Expert模块时,就不需要考虑兼容性问题了。 ...
2018-12-29 08:31:56
4054
2
原创 【MPC5744P】Bootloader上位机开发(CAN通讯)
上位机源码范例直接下载:https://download.youkuaiyun.com/download/u010875635/10882176此处上位机采用C#编写,界面框架为WPF。为保证烧录过程不出现错误,上下位机采用一问一答模式,上位机发送一帧数据后,下位机接收处理完毕再回馈给上位机,上位机再决定下一步动作。核心代码逻辑部分,将命令分成EntryBootloader, Reset, Dat...
2018-12-28 08:33:43
8826
36
原创 【MPC5744P】Bootloader下位机开发(CAN通讯)
Bootloader下位机及用户APP范例直接下载:https://download.youkuaiyun.com/download/u010875635/10882172此下位机开发通讯采用CAN,所有Hex文件解析工作在上位机,下位机尽可能避免复杂操作,以加快烧录速度。使用的为NXP DEVKIT-MPC5744P开发板。为保证烧录过程不出现错误,上下位机采用一问一答模式,上位机发送一帧数据后...
2018-12-28 08:33:03
5076
31
原创 【MPC5744P】Hex文件解析
MPC5744P采用的标准IntelHex格式,一个地址为一个字节。1、hex文件以ascii形式,按照行来记录数据2、每一行从:开始,每至少2个字符表示一组16进制数据,格式为 :BBAAAATTHHHH....HHHCC BB -- 16进制,表示此行数据长度字节数,表示HH的数目 AAAA -- 16进制,表示数据记...
2018-12-28 08:32:27
1494
2
原创 【MPC5744P】内部Flash读写
MPC5744P内部Flash相当大,除了存储代码,多余的空间还可以另作它用,例如参数存储,故障存储,当然,Bootloader也是依赖于Flash读写。内部Flash的结构请参考上一篇关于Flash结构及启动原理的说明:https://blog.youkuaiyun.com/u010875635/article/details/85162135读取:一次读取256位。擦除:一次擦除一个block...
2018-12-24 13:41:54
3683
32
原创 【MPC5744P】Flash 结构、启动原理以及内存映射
与大部分的MCU相同,MPC5744P的Flash、RAM以及外设都映射到内存地址中了。以下为映射地址范围: MPC5744P Flash结构如下: 0x00000000-0x003FFFFF -- reserved 0x00400000-0...
2018-12-21 15:23:39
7771
22
原创 【Linux】Grub模式硬盘安装ubuntu16.04
确保可进入Grub,参考前面Grub安装配置。预准备:使用磁盘工具,准备一个任意格式的需要安装系统的分区,或者整个磁盘,做好标记,安装时需要选择。 安装步骤:1、 把镜像放到分区根目录下,假设名字为ubuntu-16.04.1-amd64.iso,把镜像中casper文件夹内的vmlinuz.efi和initrd.lz也提取到优盘根目录。这两个文件的作用是在grub环境中加载lin...
2018-12-17 14:36:41
3444
原创 【Linux】U盘配合WinPE 安装debian8.6
我们可以直接将grub安装到u盘中,使用grub引导winpe菜单,编辑或者增加一条菜单用于引导安装ubuntu或者debian或者fedora或者其他,或者直接添加一个进入grub命令行的菜单。预准备:使用磁盘工具,准备一个任意格式的需要安装系统的分区,或者整个磁盘,做好标记,安装时需要选择。硬盘安装时,引导安装文件要与版本以及操作位数对应,例如debian8.7 amd64的引导文件就...
2018-12-17 14:35:37
2874
原创 【Linux】Grub模式硬盘安装openSUSU42.2
首先确保可以进去到grub,grub进入方法有很多,easybcd安装grub启动,或者使用grub4dos,可以参考grub的安装配置。这里建议使用grub4dos。 注意:BIOS中最好禁用acpi,部分机器boot启动安装之后要立马拔掉所有usb,包括键盘,不然会卡在loadingbasicdrivers,启动之后再插上键盘。如果有安装windows,若是后续无法启动,则需要将...
2018-12-17 14:33:02
475
原创 【Grub】Grub引导的安装配置
Grub引导是安装Linux经常需要的东西,有时无法进入linux系统了,也没有安装镜像,那么也可以用Grub来进入系统,修复grub2引导。 Grub安装步骤一、下载必备软件 软件主要有2个: 1、bootice(大部分pe里都有); 2、grub4dos包,其中的grldr用于引导grub菜单的,下载一个grub4dos,取出里面的grldr和menu.lst,me...
2018-12-17 14:30:50
4427
1
原创 【Grub2】在优盘中安装Grub2
Grub2不像grub那样需要下载grub4dos,因为现在各大linux基本都是用grub2引导,直接在linux下安装即可,如果没有linux系统,那就只能使用bootice建立grub2的mbr然后下载grub24dos放到对应根目录了。下面介绍linux下将优盘。安装mbr有两种方式,一种是安装到磁盘,即mbr,一种是安装到分区,也就成了pbr。mbr会被bios识别,pbr要通过...
2018-12-17 14:28:22
3798
原创 【Grub2】Grub2修复
Grub2引导存在于绝大多数linux,起到引导系统的作用,当它损坏了,无法进入系统时,该如何修复呢。1、pbr完好,mbr损坏。2、pbr也丢失了。对于第一种,进入pe,使用bootice建立grub2主引导记录即可。对于第二种,只能使用iso镜像或者cd进入安装修复,alt f2进入修复模式。或者选择shell,输入命令mount /dev/sdax /mnt #适用于所...
2018-12-17 14:27:10
2230
原创 【Linux】命令配置网络地址
首先编辑/etc/network/interfaces设置IP地址和网关,最好先备份,如果你要配置的是eth0网卡,设置如下:auto eth0 #开机自动连接网络iface lo inet loopbackallow-hotplug eth0iface eth0 inet static #static表示使用固定ip,dhcp表述使用动态ipaddress 198.9.146.1...
2018-12-17 14:25:08
694
原创 【Linux】CentOS7中添加windows引导
需要安装ntfs-3G才支持ntfs分区,这样才可以搜索ntfs分区,然后重新生成。wget -O /etc/yum.repo.d/epel.repohttp://mirrors.aliyun.com/repo/epel-7.repoyum install ntfs-3ggrub2-mkconfig -o /boot/grub2/grub.cfg ...
2018-12-17 14:22:32
1243
原创 【Linux】Grub安装CentOS7
安装CentOS7主要需要镜像,从镜像中提取vmlinuz和initrd.img与iso文件放到fat32分区,对于大于4g的iso,只能放到ext2分区,使用windows的ext2工具可以将文件拷贝进去。 使用grub加载CentOS镜像时,需要加载kernel并设置iso文件所在盘,以及initrd。 建议使用grub的commandline进...
2018-12-17 14:20:04
3965
原创 【MPC5744P】S32DS编译生成Hex文件的方法
S32DS中编译生成MPC5744P项目时,默认只生成elf文件,elf文件包含众多调试信息,因而相较于hex文件,体积要大得多,而且需要另外开发elf解析模块,不如hex通用。 设置生成Hex的方法如下:1、项目中右键->Properties2、在C/C++ Build -> Setting -> Build Steps -> Post-build s...
2018-12-17 11:53:14
5801
1
原创 【MPC5744P】劳特巴赫调试器Trace32的使用方法
对于大部分MCU来说,官方IDE一般都带有调试功能,配合JTAG接口使用即可,也支持变量查看、断点等功能。绝大多数工业开发的中小型程序,使用自带调试器即可,价格便宜,几十到几千不等。在某些特殊领域(例如汽车行业)或者超大型项目中,对调试的要求就更高了,例如捕捉某些偶发性的问题、死机调试、代码分析、函数运行时间测试等。这时,就需要一个强大的调试工具了,而劳特巴赫就是一个专门为各个不同厂商的芯片提...
2018-12-07 16:09:21
42870
8
原创 【MPC5744P】S32DS中Processor Expert自动生成代码工具使用教程(二) FreeMaster调试
对于使用调试口,下位机不需要做任何特别的设置,直接按照链接中设置方法来设置上位机即可,注意FreeMaster只能监测下位机中的全局变量。链接地址:https://blog.youkuaiyun.com/u010875635/article/details/84789579 若是使用普通通讯口,则下位机需要做一些额外的工作。由于暂时的版本FreeMaster自动配置的Bug,会导致许多编译错误,所...
2018-12-06 15:38:07
5452
原创 【MPC5744P】S32DS中Processor Expert自动生成代码工具使用教程(一) 开发环境搭建
MPC5744P是NXP近几年推出来的主打安全功能的双核MCU,非常适合在汽车控制器相关产品中使用,非常强大。但是强大的同时,也意味着开发难度增大。MPC5744P外设功能相关的寄存器非常之多,且对应的参考教程非常少,像STM32之类的工业MCU开发难度根本无法与之相比,早期只能依据官方参考手册上寄存器的描述来配置外设,而官方英文原版参考手册超过三千页,且寄存器之间的相关关联描述语焉不详,学习...
2018-12-06 10:12:07
9221
5
原创 【MPC5744P】FreeMaster上位机配置
FreeMaster调试相对于劳特巴赫的工具可能没有那么强大,但是它有一个优点,就是免费,也可以实时观察变量,而无需停下来,不过需要注意的是变量必须是全局变量。FreeMaster本质上和普通上位机没有太多区别(比一般上位机多了调试口连接),但是对于一般调试而言,可以大大减少开发者自行开发上位机的必要性。FreeMaster上位机可以直接加在elf文件并且获取其中的符号对应的地址,因此动态...
2018-12-04 15:54:38
6965
28
原创 【dsPIC33E】内部Flash读写
基于某些安全考虑或者降成本,我们不希望使用外部存储器件,但有时我们由需要记录一下参数,确保断电不丢失,这时,富余的内部代码存储Flash就派上用场了。不同于外部存储器,几乎所有的内部Flash读写都十分麻烦,甚至需要使用到汇编。下面我们将讲述dsPIC33E如何读写内部Flash,此处以dsPIC33EP256GP506为例。 示例代码下载:https://download.csd...
2018-12-01 15:13:43
5555
3
原创 【dsPIC33E】Bootloader(四)Bootloader上位机
前面已经将下位机部署完毕,本节将讲述上位机。上位机的工作相对比较简单,主要就是解析Hex文件,然后将数据发送到下位机。注意发送的Hex文件只能是User App,不能带有Bootloader,否则可能会覆盖之前的Bootloader,导致出错。上位机源码下载地址:https://download.youkuaiyun.com/download/u010875635/10819828 上位机...
2018-11-30 16:53:53
4133
6
原创 【dsPIC33E】Bootloader(三)Bootloader下位机
前面2节讲述了dsPIC33E的Flash存储结构以及Hex格式,接下来开始讲述如何编写Bootloader下位机和上位机。本节讲述下位机的设计,考虑到执行效率和烧录时间,我们将主要解析工作放到上位机中,因为PC的执行速度远高于MCU。在上位机中,我们将Hex文件解析成一组一组的地址和数据组合,然后将一个地址和数据打包发送到Bootloader,Bootloader将其写入对应地址内。我们...
2018-11-30 16:52:52
3092
5
原创 【dsPIC33E】Bootloader(二)Microchip的Hex文件结构介绍
市面上大多数单片机的Hex文件都是基于Intel Hex,而dsPIC33E也不例外,dsPIC33E支持的格式为Intel HEX32(INHX32)。hex文件以ascii形式,按照行来记录数据每一行从:开始,每至少2个字符表示一组16进制数据,格式为 :BBAAAATTHHHH....HHHCC BB -- 16进制,表示此行数据长度字节数,...
2018-11-30 16:52:03
3323
8
原创 【dsPIC33E】Bootloader(一)Bootloader的介绍与Flash结构
对于嵌入式开发而言,Bootloader几乎与操作系统同等重要,它可以让我们摆脱MCU官方工具,定制自己的烧录工具,不仅提高产品辨识度,同时也大大减少了对外引脚数量(例如兼容通信的Uart或CAN等,而不需要另外接JTAG)。要开发Bootloader,相对于普通程序,是有一定难度的,这其中涉及到MCU的工作原理、内部存储结构等,而且仅仅依靠C语言可能无法完成,有时需要配合汇编来精确执行特殊指...
2018-11-30 16:51:08
5878
26
飞思卡尔 MC9S12XEP100 App Demo(用于Bootloader刷写程序)
2020-01-03
Freescale MC9S12XEP Bootloader 下位机
2019-09-07
Freescale_Bootloader上位机.7z
2019-09-07
MC9S12_Flash及模拟EEPROM.7z
2019-07-26
MPC5744P CAN Bootloader上位机源码
2018-12-28
MPC5744P CAN Bootloader下位机及用户APP示例
2018-12-28
MPC5744P内部Flash读写
2018-12-24
MPC5744P FreeMaster下位机示例
2018-12-05
dsPIC33E 内部Flash读写及其它外设驱动
2018-12-01
dsPIC33EBootloader上位机源码
2018-11-30
dsPIC33EBootloader下位机
2018-11-30
WPF 屏幕及摄像头录像 源码工程
2018-11-20
Win7安装vs2015提示安装包损坏或者丢失解决,证书microsoft root certificate authority
2018-09-30
Qt Linux版USB-HID通讯范例
2018-09-27
C#版USB-HID范例
2018-09-27
PIC32 USB-HID程序范例
2018-09-27
U盘启动盘单镜像模板(BIOS&UEFI;)(Syslinux、Grub2、Grub4Dos)
2018-09-25
万能U盘启动盘-单ISO写入【第3部分,共3部分】
2018-09-23
万能U盘启动盘-单ISO写入【第2部分,共3部分】
2018-09-23
万能U盘启动盘-单ISO写入【第1部分,共3部分】
2018-09-23
U盘启动盘单镜像(BIOS&UEFI;)(Syslinux、Grub2、Grub4Dos)【第三部分,共三部分】
2018-09-22
U盘启动盘单镜像(BIOS&UEFI;)(Syslinux、Grub2、Grub4Dos)【第二部分,共三部分】
2018-09-22
U盘启动盘单镜像(BIOS&UEFI;)(Syslinux、Grub2、Grub4Dos)【第一部分,共三部分】
2018-09-22
DiscuzX3.4一键安装包第二部分(共两部分)
2018-09-10
DiscuzX3.4一键安装包第一部分(共两部分)
2018-09-10
BIOS版本Grub2制作
2018-09-10
UEFI版本Grub2制作
2018-09-10
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人