自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(63)
  • 收藏
  • 关注

原创 freertos-HAL库-STM32Cubemax生成

待续。

2024-07-29 21:53:34 236

原创 CAN通信

CAN通信与IIC、SPI等通信协议不太一样,它是一种局域网络通信,是由博世最早开发的。最开始主要用于汽车,现在很多地方都用到了。汽车通信网络如下图。

2024-07-23 23:48:08 579

原创 linux网络驱动(以太网)

由于最近要做一个MCU的以太网通信,学习一下以太网。由于过来实习没带MCU,只能继续做一下SOC,所以这期还是imx6ull的以太网(以下简称网络)驱动。

2024-07-16 23:51:41 1381 1

原创 imx6ull----IIC--AP3216C

数据传输的时候要保证在 SCL 高电平期间, SDA 上的数据稳定,因此 SDA 上的数据变化只能在 SCL 低电平期间发生,意思就是在SCL低电平的时候SDA才能改变电平,在SCL为高电平时读取数据,SDA的高低电平就是数据的01.另一种是告诉我们,比如读是0xaa,写是0xab,这是因为把读写位放在第八位,地址为实际上是高七位的0x55(1010101),但在我们驱动开发的时候,读写位是通过一些寄存器直接发送的,所以我们发地址的时候是分开的,还是只用低7位。它的地址是0x1E,这是芯片厂商规定好的。

2024-04-25 12:26:28 350

原创 imx6ull -- SPI

SPI 是 Motorola 公司推出的一种同步串行接口技术,是一种高速、全双工的同步通信总线, SPI 时钟频率相比 I2C 要高很多,最高可以工作在上百 MHz。SPI 以主从方式工作,通常是有一个主设备和一个或多个从设备,一般 SPI 需要4 根线,但是也可以使用三根线(单向传输)。

2024-04-23 22:44:24 831

原创 imx6ull设备树驱动--pinctl、ioctl

进入arch/arm/boot/dts目录下dts文件在iomuxc下添加pinctl+led节点将 GPIO1_IO03 这个 PIN 复用为 GPIO1_IO03,电气属性(配置GPIO一些列寄存器)值为 0X10B0。

2024-04-21 22:49:15 298

原创 imx6ull设备树

DTS就是我们上面的设备树源码文件、DTB是它的二进制文件、DTC是我们编译DTS的工具,类似于我们的gcc。

2024-04-20 22:49:24 613

原创 正点原子阿尔法无法挂载nfs根文件系统

本来是跟着用户指南配置busybox的,结果搞了一下午,最后挂载不上。搜了很多文章,最后在这篇之后好了。直接用配置好的根文件系统。

2024-04-17 22:57:45 171

原创 imx6ull构建根文件系统

进入gcc-linaro-4.9.4-2017.01-x86_64_arm-linux-gnueabihf/arm-linux-gnueabihf/libc/usr/lib。进入刚解压的gcc-linaro-4.9.4-2017.01-x86_64_arm-linux-gnueabihf/arm-linuxgnueabihf/libc/lib。进入gcc-linaro-4.9.4-2017.01-x86_64_arm-linux-gnueabihf/arm-linux-gnueabihf/lib。

2024-04-17 09:44:24 244

原创 imx6ull官方源码linux内核移植

在正点原子给的资料里找到NXP官方原版linux源码,路径为: 1、例程源码->4、 NXP 官方原版 Uboot和 Linux->linux-imx-rel_imx_4.1.15_2.1.0_ga.tar.bz2。复制并解压。修改顶层Makefile编译一下make -j16出现以下错误修改就可以了。

2024-04-16 18:43:10 455

原创 imx6ul uboot移植

1.解压uboot2.复制config并修改3.复制头文件修改4.复制板级文件夹5.修改里面的文件(左上角是文件名)修改Kconfig(添加)新建脚本2.进入uboot目录下修改Makefile编译完成后如图。

2024-04-15 21:40:51 456

原创 杂项设备驱动和自动创建设备结点

make uImage --------》 板子运行。misc_register 参数是我们上个结构体的地址。misc_deregister删除设备,驱动注销时也要写上。1.填充结构体 miscdevice。这个结构体我们就用前三个成员,如下。我们复制一个以前的驱动文件修改。2.注册杂项设备、生成设备结点。然后就可以向板子上添加了。

2024-04-12 13:09:30 186

原创 内核驱动更新

2.在Kconfig里面修改设备,bool(双态)-----》tristate(三态)4.编译内核 make modules。3.进入menuconfig修改为M。也许你会看到一个 .ko 文件。.c 文件末尾加上。5.复制到根目录文件下。1.声明我们是开源的。

2024-04-11 22:38:09 286

原创 arm内核驱动-中断

用wake_even_interruptible这个卡死就可以被中断,也可以用wake_even_timeout,设置超时时间,当时间到了还在之前的地方就会被强制打断,上图红字所示。这里用的wake_even_interruptible而不用wake_event,如果是wake_event,在进入底层后,程序调度无法影响到它。irq:中断号,就是我们上面第一张图所显示的,这里是K1的EINT8。后面两个参数就是中断的名字和我们给回调函数传的参数,不在赘述。handler:中断回调函数,懂的都懂。

2024-04-11 22:04:39 504

原创 更换make版本问题解决

define __alloca alloca //stat也是一样的。显示未定义_stat 或者 __alloca未定义。如果报错man1文件已经存在了,就去相应目录下删除man1。找到make-4.1/glob/glob.c。tar -xvf 解压到ubuntu。在make的时候,可能会报错。重新make install。make install时。再次make -v查看版本。

2024-04-11 16:54:14 178

原创 linux内核驱动-在内核代码里添加设备结点

这是我们在编写内核驱动代码时特别的写法,目的就是告诉操作系统这个函数是内核的初始化以及追销的函数。我们在用户层用一些系统函数(如:fopen等等)时,会进入内核,内核会在字符注册了的设备号链表中查找。其实还是对寄存器的操作,然后把这些操作再移植到之前提到的系统给我们提供的函数(指针),最后去调用这些函数就行了。到这里我们的内核就添加了一个我们自己的驱动,但这个驱动文件里只有一些打印,我们想要实现硬件功能怎么办呢。我们在前面已经讲了怎么创建一个内核程序,我们在驱动文件的目录下创建我们自己的驱动程序。

2024-04-10 22:38:04 456

原创 linux启动流程(s3c2400)

大致流程:内核(kernel)都是由bootloader程序引导启动的,所以我们应该先烧进去bootloader程序。然后可以通过保存的内核代码或者通过远程连接(nfs/tftp)的主机下载再运行,再挂载根文件系统。

2024-04-09 17:09:48 357

原创 imu6xl点灯(C语言)

参考正点原子开发指南根据原理图可以看出,我们需要设置低电平导通电路。在原理图上找到LED0,对应IO为GPIO3。

2024-04-08 22:26:03 1809

原创 armlinux裸机-uart

uart是一对一的串行异步全双工通信通信协议,串行速度较慢(usart支持同步通信)我们使用S3C2440芯片,具体寄存器操作可以查看用户手册。为满足使用需求,我们一般都用带fifo缓冲中断。

2024-04-07 13:21:32 419

原创 armlinux-外部中断

应该遵守先关前面的中断源开关,再关后面的挂起标志。因为是前者产生的后者,不关前者就会一直产生后者。红色区域是对中断的处理,自定义。蓝色是对中断的关闭,需要用到的寄存器就是代码上的那些。由于是按键的外部中断,通过引脚的高低电平来触发。如果我们单纯配置一个按键的外部中断,就不存在子中断与优先级的问题。I=1时,IRQ(中断模式)被禁止;还要初始化中断的寄存器: 中断屏蔽(INTMSK)寄存器。通过用户手册可以看到,我们需要初始化IO口配置的寄存器有。我们还要配置程序状态寄存器CPRS的I位,打开中断。

2024-04-05 20:25:08 553

原创 arm裸机-1、定时器pwm

我们使用s3c2440,主频12M,查看用户手册通过锁相环抬升到400MHZ,分成三条通路,通过HHDIVN和PDIVN配置频率比,这个频率比配置手册已经给出。配置MPLL主频400Mhz,通过这个公式算出MPLLs、p、m都已经给出,事实上手册已经给出了一些普遍的值。这里我们选择127-2-1代码如下。

2024-04-04 22:38:20 275

原创 arm裸机(1)、点灯|按键

大意为我们在相应引脚赋1就是高电平,0就是低电平。学过51单片机的同学应该很熟悉。只不过这里用了寄存器。首先看原理图,led_1234分别对应引脚GPB 5678。芯片是S3C2440。

2024-04-03 22:13:50 244

原创 imx6ull

芯片运行模式寄存器。

2024-04-03 19:28:47 128

原创 汇编基础语句

import 函数名 声明一个外部函数。

2024-04-02 22:26:09 123

原创 硬件-1、体系架构

两张图是一样的,r0---r12是通用寄存器。其他寄存器可参考图一,cpu架构。

2024-04-02 21:48:25 529 1

原创 线程的两个示例--线程池与线程邮箱

在硬件资源充裕条件下,把线程的创建放在程序初始化阶段,避免后期需要用到进程时动态创建而浪费的时间 ------------------用空间换时间道理很好明白,直接上代码-------------------------上当了,此处省略略---

2024-03-27 22:29:15 364 1

原创 linux-开发板移植MQTT

链接:https://pan.baidu.com/s/1kvvO-HhDMDXkQ_wlNtyW_A?pwd=332i提取码:332i以下步骤教程里都写了,我这里边进行,方便大家对照。

2024-03-25 22:34:59 571

原创 linux开发板通过电脑端联网

前面5步已经配置过了,具体可以看前一个博客。

2024-03-25 19:44:46 354 6

原创 linux前期配置

mkdir nfs。

2024-03-23 15:22:50 377

原创 本人用编译

使用arm-linux-gnueabihf-gcc 编译。互通的文件在~目录下get文件内。

2024-03-23 15:18:31 115

原创 数据结构--树(二叉树)

如上图A的结点为2,B的结点为1,树的结点就是最多的那个,这棵树的结点就是3.

2024-03-22 21:39:10 290

原创 数据结构5--队列

顺序队列栈队列

2024-03-22 14:12:20 128

原创 数据结构-4(栈)

顺序栈链式栈(单向)

2024-03-20 20:16:31 88

原创 数据结构-3(链式存储顺序表)

通常用一个tmp指针来标记定位。

2024-03-19 20:07:36 205

原创 数据机构-2(顺序表)

表头(Tlen总长度, Clen当前长度)示例:创建一个存储学生信息的顺序表。

2024-03-18 21:44:01 593

原创 数据结构-1()

分为两种。

2024-03-18 11:04:20 377

原创 SQLlite数据库使用

执行sqlite语句。

2024-03-13 23:10:52 500 1

原创 数据库速通(基础)-- linux

基本数据类型。

2024-03-13 15:00:16 397

原创 并发通信(网络进程线程)

如果为每个客户端创建一个进程(或线程),因为linux系统文件标识符最多1024位,是有限的。所以使用IO复用技术,提高并发程度。

2024-03-11 21:08:11 1182

原创 http万维网

2024-03-11 10:07:48 373

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除