- 博客(24)
- 资源 (9)
- 收藏
- 关注
原创 Linux-4.9.2内核在mini2440上的移植(前言)
基于mini2440开发板的linux内核移植,网上的教程多是基于linux-2.6.32.2版本,教程内容相对完整,入门者跟着教程操作基本可以成功,满足实践需求。也有少部分linux-3.x版本内核移植教程,但是内容细节不丰富。现在最新的linux内核版本已经升级到4.13(截止于2017.9.25),最新版本的内核加入了一些新的特性与功能,并修改了一些bug,所以尝试使用新内核是一种需求,不应该
2017-09-28 17:22:59 3014
原创 基于ENC28J60+uIP1.0+STM32的UDP Server实现,服务器主动发送数据的实现,几个关键的问题可算整明白了!
ENC28J60,是一款SPI接口的以太网PHY+MAC芯片,实现以太网物理层和MAC层硬件通信。uIP是一个TCP/IP软件协议栈,实现TCP、UDP、ARP、ICMP等网络协议。STM32F103RCT6通过SPI接口与ENC28J60通讯,并移植uIP协议,实现一个小型的UDP服务器。
2023-09-20 23:26:51 2099 4
原创 STM32F407使用Helix库软解MP3并通过DAC输出,最精简的STM32+SD卡实现MP3播放器
原理:STM32从SD读取MP3文件原始数据,发送给Helix库解码,Helix解码后输出PCM数据流,将此数据进一步处理转换后,按照左右声道分别存入DAC输出1和2缓存,通过定时器以MP3文件的采样率的频率提供DAC触发节拍,通过DMA取缓存中高12位数据给DAC,在DAC1和2引脚产生音频波形,通过电容耦合到耳机的左右声道上。记录了音频采样的数据,双通道、16bit的PCM数据格式是以0轴为中心,范围为-32768~32767的数值,每个数据占用2字节,左声道和右声道交替存储,如图。
2023-08-15 23:07:51 11045 13
原创 Linux-4.9.2内核在mini2440上的移植(二)——Ubuntu编译环境搭建(下)
上篇文章介绍安装虚拟机服务器,并启用了ssh。本篇目的:在ubuntu服务器配置arm-linux-交叉编译环境,tftp服务器。2.1安装arm-linux-编译器编译器在ubuntu环境下可以使用apt命令自动安装,也可以下载独立的安装包手动安装,这两种安装方式都可以实现内核编译,不同版本的arm-linux-gcc可以在系统中共存。本文会介绍这两种安装方法。任一种编译器都能
2020-05-12 15:25:52 2538 2
原创 STM32L4新版HAL库SDIO(DMA)、FatFs使用教程(四)
添加FreeRtos支持。FreeRtos中使用FATFS是强制要求使用DMA模式的SDIO驱动。步骤如下:1、打开工程配置文件,添加FreeRtos支持2、配置参数发现configuration选项卡SDMMC1报错,信息如下,意思是中断优先级问题。打开NVIC配置界面,修改中断优先级,注意,DMA优先级要比SD中断优先级低。打开FREERTOS选项,如图所示...
2018-10-29 22:07:21 4733 4
原创 STM32L4新版HAL库SDIO(DMA)、FatFs使用教程(三)
使用FatFs文件系统添加FatFs文件系统,使用DMA读写方式驱动。1、打开配置文件,在FatFs勾选SD Card2、在configuration选项卡中打开“FATFS”选项,按下图配置,以支持中文和长目录。生成代码并打开工程。 打开菜单栏project -> settings,如图红框部分,调大堆栈,heap = 0x400, Stack = 0x100...
2018-10-29 22:04:05 9094 28
原创 STM32L4新版HAL库SDIO(DMA)、FatFs使用教程(二)
使用DMA控制SDIO上一节已经成功使用普通SDIO模式驱动起SD卡了,但是使用FreeRtos时,CubeMX会强制要求使用DMA模式。下面介绍以DMA模式驱动SDIO的方法。1、首先,打开CubeMX配置好的文件STM32L476RGT6_SDIO.ioc。2、到configuration选项卡中,打开SDMMC1,再到DMA Settings选项卡,这里我们添加DMA通道。这里...
2018-10-29 21:57:44 9765 7
原创 STM32L4新版HAL库SDIO(DMA)、FatFs使用教程(一)
普通方式控制SD1、打开STM32CubeMX新建工程,选择芯片。2、配置基本外设:(1)配置SYS,打开调试口。我用Jlink-OB,就选SYS下面的Debug选项中的Trace Asynchronous Sw选项,根据实际自行选择。这一步很重要,如果忘记配置,再刷程序就很麻烦了。将Timebase Source选为TIM6,这一步尽量做,避免以后使用FreeRtos时发生冲突。...
2018-10-29 21:44:07 10157 10
原创 STM32L4新版HAL库SDIO(DMA)、FatFs使用教程(前言)
前言:ST的CubeMX库确实强大,但是同时也挖了不少的坑。使用HAL库SDIO驱动TF卡,按照旧版本的套路开发就不行。如何区分新版和旧版呢?一般来说,基本上HAL固件包发布日期在2017年6月之后的HAL固件对SDIO驱动进行了更新。打开“stm32l4xx_hal_sd.c”文件(其他系列就打开类似文件,例如F4系列就是“stm32f4xx_hal_sd.c”),搜索“HAL_SD_C...
2018-10-29 21:36:11 5216 3
原创 Linux-4.9.2内核在mini2440上的移植(十五)——总结
到此,未完成的驱动包括:15.1、UDA1341音频驱动(未解决)原因:linux-4.x版本的音频驱动采用了ALSA全新的结构,按照linux-2.6内核的音频驱动移植方法移植,一定会失败的。在linux2.x与linux4.x版本之间的linux3.x部分版本,可以使用ASOC的音频驱动模式,具体测试过的版本是linux-3.6.6,可以直接参考该版本内的arch/arm/mach-s
2017-10-05 14:32:09 1214 1
原创 Linux-4.9.2内核在mini2440上的移植(十四)——蜂鸣器驱动移植
本篇目的:移植蜂鸣器驱动,并测试。本篇参考:http://singleboy.blog.163.com/blog/static/54900194201152921847149/14.1 蜂鸣器驱动源码添加(1)添加源码drivers/misc/mini2440_pwm.croot@ubuntu:~/linux-4.9.2# vim drivers/misc/mini2440_pwm
2017-10-05 12:24:10 731
原创 Linux-4.9.2内核在mini2440上的移植(十三)——按键驱动移植
本篇目的:移植按键驱动,并测试。本篇参考:http://singleboy.blog.163.com/blog/static/54900194201152824449789/12.1 按键驱动源码添加(1)添加驱动源码drivers/misc/mini2440_buttons.croot@ubuntu:~/linux-4.9.2# vim drivers/misc/mini2440
2017-10-04 23:07:53 551
原创 Linux-4.9.2内核在mini2440上的移植(十二)——LED驱动移植
本篇目的:移植LED驱动,并测试。本篇参考:http://singleboy.blog.163.com/blog/static/54900194201152811472442/12.1 LED源码添加(1)添加源码drivers/misc/mini2440_leds.croot@ubuntu:~/linux-4.9.2# vim drivers/misc/mini2440_leds
2017-10-04 22:47:54 690
原创 Linux-4.9.2内核在mini2440上的移植(十一)——触摸屏驱动移植
本篇目的:移植触摸屏驱动,并测试。本篇参考:http://singleboy.blog.163.com/blog/static/54900194201152310140885/11.1 触摸屏源码添加(1)进入到驱动目录root@ubuntu:~/linux-4.9.2#cd drivers/input/touchscreen/ (2)备份原来的驱动程序root@ubu
2017-10-02 16:26:36 1500
原创 Linux-4.9.2内核在mini2440上的移植(十)——ADC驱动移植
本篇目的:移植ADC驱动,并测试。本篇参考:http://singleboy.blog.163.com/blog/static/54900194201152284152419/ 说明:1、本文源码参考链接的源码修改,在linux-4.9.2下移植驱动请务必使用本源码2、源码为了方便粘贴,部分注释已经去掉,需要注释请查看参考网址10.1 添加ADC驱动源码文件
2017-10-01 18:15:56 957
原创 Linux-4.9.2内核在mini2440上的移植(九)——LCD驱动移植
本篇目的:添加背光驱动,添加LCD驱动。本篇参考:背光添加:http://singleboy.blog.163.com/blog/static/54900194201152183748863/LCD驱动:http://singleboy.blog.163.com/blog/static/54900194201152113914540/9.1 背光驱动添加LCD的背光控制引脚是G
2017-09-30 13:39:24 1914
原创 Linux-4.9.2内核在mini2440上的移植(八)——RTC驱动移植
本篇目标:移植RTC驱动,使时钟正常运行。8.1 添加RTC支持上篇说到,RTC的驱动有问题,这个问题在启动日志中的体现是hctosys: unable to open rtc device (rtc0),可见RTC驱动没有加载上。我们先将RTC驱动添加到mach-mini2440.c文件中。root@ubuntu:~/linux-4.9.2#vim arch/arm/mach-s
2017-09-28 22:07:13 1411
原创 Linux-4.9.2内核在mini2440上的移植(七)——NFS文件系统挂载
本篇目标:在ubuntu主机上搭建一个NFS服务器,并将友善提供的rootfs源码进行NFS挂载测试,验证yaffs文件系统以及DM9000的驱动是否正常运行。NFS服务器搭建参考:http://www.linuxidc.com/Linux/2017-02/141150.htmhttp://www.linuxidc.com/Linux/2016-04/129848.htm 7.
2017-09-28 22:01:52 2438
原创 Linux-4.9.2内核在mini2440上的移植(六)——修改MD9000驱动
本篇目标:修改DM9000驱动,使内核支持网络。6.1 移植DM9000 网卡驱动(1)在linux-4.9.2文件夹,输入root@ubuntu:~/linux-4.9.2#vim arch/arm/mach-s3c24xx/mach-mini2440.c定位到53行,添加#include#include (2)填充该平台设备的资源设置定位到206行附近,如
2017-09-28 21:56:47 940
原创 Linux-4.9.2内核在mini2440上的移植(五)——添加yaffs文件系统
本篇目标:为内核添加yaffs文件系统支持。5.1.安装GIT工具root@ubuntu:~/linux-4.9.2# apt-get install git 5.2获取yaffs2 源代码(1)切换到根目录root@ubuntu:~/linux-4.9.2# cd /root (2)git源码root@ubuntu:~# git clonegit://www.
2017-09-28 21:51:05 1484
原创 Linux-4.9.2内核在mini2440上的移植(四)——修改Nand Flash分区表
本篇目标:在linux-4.9.2的源码中,配置nand flash的分区表。4.1 修改mach-mini2440.c切换回之前的putty窗口,用vim打开mach-mini2440.c文件,在第148行之后添加如下代码:(红色部分) .lpcsel = ((0xCE6) & ~7) | 1}; /* NAND parititon from
2017-09-28 21:45:26 2922 1
原创 Linux-4.9.2内核在mini2440上的移植(三)——编译环境测试
本篇目标:获取linux-4.9.2源码,在服务器上编译,并通过tftp在开发板中试运行。3.1 linux-4.9.2源码获取为什么选择4.9.2移植呢?因为太新的linux源码yaffs文件系统跟不上,编译过程会导致大量错误无法使用,所以选择比较新的源码就可以了。具体的说明到移植yaffs文件系统时再说。 我们的工作目录定在/root下面,进入到目录root@ubunt
2017-09-28 18:23:02 8726 4
原创 Linux-4.9.2内核在mini2440上的移植(一)——Ubuntu编译环境搭建(上)
1.1 编译调试环境介绍Linux内核编译是一个CPU等硬件资源占用非常多的过程,所以内核编译尽量使用一台性能较强的linux服务器作为编译主机,开发者使用ssh工具登录到远程主机进行相关操作。但是多数情况下,我们只有一台电脑,所以需要虚拟机软件,在虚拟机中运行linux,假装存在一台这样的服务器,这台服务器是使用自己电脑的硬件资源。编译环境拓扑图如图所示在上图中,服务器可以虚
2017-09-28 17:39:29 1798
原创 友善之臂MINI2440移植Linux内核“Kernel panic”的解决方法
Failed to execute /linuxrc. Attempting defaults...Kernel panic - not syncing: No init found. Try passing init= option to kernel.
2016-03-23 14:05:29 1562
STM32F407VG USB_CDC虚拟串口
2016-06-13
图书馆书库借阅管理系统设计
2013-07-14
用单片机和LCD12864设计的万年历
2013-07-14
表达式求值的设计与实现(c++)
2012-01-07
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人