自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

LPS

  • 博客(26)
  • 资源 (7)
  • 收藏
  • 关注

原创 [C/C++笔记] fstream以二进制模式读写字符串类型string

fstream以二进制模式读写字符串类型string

2023-06-09 14:57:37 1714

原创 [C/C++笔记] 文件读写操作fstream

文件读写操作 fstream

2023-06-09 11:22:11 1584

原创 [C/C++笔记] dynamic_cast的使用

dynamic_cast的使用

2023-06-08 17:08:54 637

原创 [嵌入式] SSH使用(二):使用VSCode远程调试Linux上的代码,并设置免密登陆

VSCode远程免密登陆Linux,远程编辑调试代码。

2022-07-23 12:22:58 564 1

原创 [嵌入式] SSH使用(一):远程登陆Linux和传输文件(MobaXterm)

MobaXterm远程登陆Linux

2022-07-23 00:10:06 2104

原创 [嵌入式] 重温Mini2440(四)移植Yaffs2文件系统 (Yet Another Flash File System)

重温Mini2440(四)移植yaffs2文件系统一. 获取Yaffs2源码二. 给内核打yaffs2补丁三. 配置内核四. 生成根文件系统镜像五. 烧写镜像六. 启动内核挂载根文件系统一. 获取Yaffs2源码根据Yaffs官网可知,通过git clone来获取最新的源码:git clone git://www.aleph1.co.uk/yaffs2二. 给内核打yaffs2补丁./patch-ker.sh c m /home/lps/linux-4.9.270三. 配置内核1.回到L

2021-06-03 15:55:13 324

原创 [嵌入式] 重温Mini2440(三)使用BusyBox制作根文件系统

重温Mini2440(三)使用BusyBox制作根文件系统一. 获取BusyBox二. 根文件系统目录三. 配置编译1. 修改Makefile2. 导入默认配置3. 修改配置4. 编译与安装五. 创建必要文件1. etc/inittab2. etc/init.d/rcS3. etc/fstab4. etc/profile六. U-Boot参数设置七. 其他问题一. 获取BusyBox可以在BusyBox Index of /downloads下载最新版本也可以使用git clone git://bus

2021-06-02 16:25:58 420

原创 [嵌入式] 重温Mini2440(二)移植Linux-4.9.270

重温Mini2440(二)移植Linux-4.9.270一. 获取Linux内核二. 安装编译工具三. 配置内核四. 修改驱动五. 生成uImage六. U-Boot引导内核一. 获取Linux内核在The Linux Kernel Archives可以下载到最新的Linux内核此文使用的版本是: longterm: 4.9.270下载得到linux-4.9.270.tar.xz压缩包,通过tar命令解压得到内核源码:tar -xvJf linux-4.9.270.tar.xz二. 安装编译工

2021-06-02 10:36:12 433

原创 [嵌入式] 使用J-Link烧写bin文件到Mini2440的NOR flash

使用J-Link烧写bin文件到Mini2440的NOR flash一. J-Link和配置文件二. 手动配置三. 烧写bin文件一. J-Link和配置文件Setup_JLinkARM_V440.zipmini2440.jflash二. 手动配置如果不想使用mini2440.jflash,可以自己手动配置打开J-Flash ARM,并进入菜单:Options-Project settingsCPU选项Core:ARM9,Little endianUse target RAM(fas

2021-05-17 16:32:12 328

原创 [嵌入式] 重温Mini2440(一)移植U-Boot

重温Mini2440(一) - U-Boot一. 前言二. 下载U-Boot1. 编译2. 烧录三. 使用U-Boot1. 设置网络地址2. ping命令3. tftp命令4. nfs命令5. nand flash启动一. 前言Mini2440所搭载的s3c2440早已停产,但是平台会过时技术不会过时,还是具有一定的学习意义,最后发挥一次这块开发板的余热吧。U-Boot涉及的技术是裸机开发,实际工作中U-Boot主要是作为工具使用,利用tftp和nfs来下载内核和挂载根文件系统,此篇只记录U-Boot

2021-05-11 14:09:38 881

原创 [STM32] 可以烧写程序,但上电无法正常运行,调试时无法进入Main函数

问题现象可以烧写程序,但上电无法正常运行,调试时无法进入Main函数,Disassembly Window反汇编发现卡在以下指令:LDR r1,[r0,#0x808]LSLS r1,r1,#21BMI 0x1FFFF3B2解决办法如果复位电路,晶振都没有问题的话,检查BOOT0和BOOT1引脚配置,通常情况下BOOT0需要拉低。BOOT0和BOOT1这两个引脚在芯片复位时的电平状态决定了芯片复位后从哪个区域开始执行程序:BOOT1=x BOOT0=0 从用户闪存启动,这是正常的工作模

2021-03-31 13:15:22 5859 2

原创 [嵌入式] 快速配置NFS服务实现Linux主机与ARM开发板文件共享

Linux快速配置NFS服务一. 前言二. 服务端安装NFS服务1. 服务端Linux主机/虚拟机安装服务2. 新建共享目录3. 修改/etc/exports文件4. 重启rpcbind服务5. 重启NFS服务6. 查看NFS服务启动状态三. 客户端使用NFS服务1. 网络测试2. 客户端挂载共享目录3. 测试服务一. 前言NFS(Network File System)即网络文件系统,是FreeBSD支持的文件系统中的一种,它允许网络中的计算机之间通过TCP/IP网络共享资源。在NFS的应用中,本地N

2021-03-29 15:25:01 1520 2

原创 [C/C++笔记] 引用

C++ 引用1. 作用: 给变量起别名int a = 10;int &b = a; //给a起个别名:b引用必须初始化引用在初始化后,不可以改变本质:在C++内部实现是一个指针常量(指向不可变,指向的值可变)2.引用作函数参数//1. 值传递void mySwap01(int a, int b){ int temp = a; a = b; b = temp;}//2. 地址传递void mySwap02(int* a, int* b){ int temp

2021-03-28 17:05:16 82

原创 [C/C++笔记] const与指针

const与指针int a = 10, b = 20;//常量指针 const修饰的是int *,因此p可变,*p不可变//特点:指针的指向可以改,指针指向的值不可以改const int *p = &a;p = &b; //正确*p = 30; //错误//指针常量 const修饰的是p,因此p不可变,*p可变//特点:指针的指向不可以改,指针指向的值可以改int *const p = &a;p = &b; //错误*p = 30; //正确

2021-03-28 17:01:39 51

原创 [C/C++笔记] 内存四区

内存四区代码区:存放函数体的二进制代码,由操作系统进行管理​存放 CPU 执行的机器指令​代码区是共享的,共享的目的是对于频繁被执行的程序,只需要在内存中有一份代码即可​代码区是只读的,使其只读的原因是防止程序意外地修改了它的指令全局区:存放全局变量,静态变量,常量区​常量区包含了:字符串常量,const修饰的全局变量(全局常量)//全局变量 - 全局区int g_a = 10;int g_b = 10;//全局常量 - 常量区const int c_g_a = 10;const

2021-03-28 16:58:52 70

原创 Linux下使用VSCode,GCC,OpenOCD实现STM32一键编译烧录调试(CMake篇)

Linux下使用VSCode开发STM32(二)一. 开发工具安装二. 测试工程简介三. CMake工具1. CMakeLists.txt2. 生成Makefile3. make编译四. json脚本实现一键编译烧录调试1. launch.json2. task.json3. 一键编译调试五. 工程代码下载...

2021-03-12 11:06:12 4184 7

原创 Linux下使用VSCode,GCC,OpenOCD实现STM32一键编译烧录调试(STM32CubeMX篇)

Linux下使用VSCode开发STM32(一)一. 开发工具安装1. Visual Studio Code与插件2. STM32CubeMX3. OpenOCD烧录工具4. gcc-arm-none-eabi编译器二. 生成工程1. STM32CubeMX生成工程代码2. VSCode编辑工程三. OpenOCD烧录四. json脚本实现一键编译烧录调试1. launch.json2. task.json3. SVD文件4. 工程目录5. 一键调试六. 总结七. 工程代码

2021-03-09 10:34:54 6391 7

原创 Linux下使用VSCode和CMake搭载C/C++开发环境

Linux下使用VSCode和CMake搭载C/C++开发环境一. 开发环境介绍1. 最终目的2. 所使用的工具介绍二. 开发工具安装1. Visual Studio Code2. 安装编译器和调试器3. 安装CMake三. 开发环境配置1. 创建测试目录并用VSCode打开2. 编写cpp和CMake文件3. 编写json脚本实现一键自动化编译调试四. 编译和调试工程五. 总结...

2021-03-06 16:59:46 2969 8

原创 [LDD3速记]_PCI驱动程序

总线由电气接口和编程接口构成        PCI(Peripheral Component Interconnect,外围设备互联)一、PCI接口目标:获得在计算机和外设之间传输数据时更好的性能,尽可能的平台无关,简化往系统中添加和删除外设的工作

2013-07-10 16:17:03 687

原创 [LDD3速记]_内核的数据类型

一、内核的数据类型1. 标准C语言类型        内核内存地址通常是unsigned long,指针和long整形大小总是相等的2  长度明确的类型        用途:匹配预定义的二进制结构;与用户空间通信;在结构体中插入填白(padding)字段来对齐数据        如果一个用户空间需要使用这些类型,可以在名字前面加上两个下划线作为前缀(u32)   

2013-07-08 16:56:24 457

原创 [LDD3速记]_中断处理

一、安装中断处理1. 申请中断int request_irq(unsigned int irq, irqreturn_t (*handler)(int, void *, struct pt_regs *), unsigned long flags, const char *dev_name,

2013-07-08 12:50:46 600

原创 [LDD3速记]_与硬件通信(I/O端口和I/O内存)

一、I/O端口和I/O内存        ISA设备普遍使用I/O端口,而大多数PCI设备则把寄存器映射到某个内存地址区段1. I/O寄存器和常规内存        I/O寄存器和RAM的最主要区别:I/O操作具有边际效应而内存操作没有        访问I/O寄存器时需避免由于CPU或编译器不恰当的优化(内存访问顺序)而改变预期的动作,因此驱动程序必须确保不使用高速缓

2013-07-05 11:32:17 632

原创 [LDD3速记]_per-CPU变量

一、特性        当建立一个per-CPU变量时,系统的每个处理器都会有改变量的特有副本        对per-CPU的访问无需锁定        可以保存在高速缓存        eg.:网络子系统(的计数器)二、接口#include DEFINE_PER_CPU(type, name);/* 编译期间创建per-CPU变量 */DE

2013-07-04 10:58:30 588

原创 [LDD3速记]_内存分配

一、kmalloc函数原型:#include void *kmalloc(size_t size, int flags);最终总是调用get_free_pages(GFP)实现1. flags参数        常用的标志:        GFP_KERNEL:运行于进程上下文,可休眠以等待一个页面(休眠时内核把缓冲区的内容刷写到硬盘,或者从一用户进程换出内存,以获取一个内存

2013-07-04 10:19:33 449

原创 [LDD3速记]_tasklet、工作队列、共享队列

tasklet一、用途        中断管理二、特性        1. 与内核定时器相比:        相同点:中断期间运行(在“软件中断”上下文以原子的模式执行)、在调度它的CPU上运行、接收一个ulong参数        不同点:不能在某个给定的时间定时执行        2. 可被禁止或重新调用;只有启动和禁止的次数相同时tasklet才会t被执行

2013-07-03 14:36:52 564

原创 [LDD3速记]_内核定时器

一、用途用于在未来某个特定的时间点(基于时钟滴答)调度执行某个函数,同时在时间点到来前不会阻塞当前进程。eg:轮询设备状态、关闭软驱马达二、特性1. 是一个数据结构2. 任务可重新运行(自己注册)3. 只会在注册自己的处理器上运行4. 异步执行,故在单处理器系统上,是竞态的潜在来源(定时器访问的数据结构需进行并发访问保护:原子变量或自旋锁)三、接

2013-07-02 17:51:51 468

mini2440.jflash

mini2440.jflash

2021-05-17

Setup_JLinkARM_V440.7z

Setup_JLinkARM_V440.7z

2021-05-17

u-boot-2010.03-tekkaman-master.zip

tekkamanninja opensource u-boot-2010.03_tekkaman for Friendly-ARM mini2440

2021-05-11

Linux下开发STM32测试工程.7z

使用教程: Linux下使用VSCode,GCC,OpenOCD实现STM32一键编译烧录调试(STM32CubeMX篇) https://blog.csdn.net/u010000843/article/details/114531922 Linux下使用VSCode,GCC,OpenOCD实现STM32一键编译烧录调试(CMake篇) https://blog.csdn.net/u010000843/article/details/114645057

2021-03-12

STM32F407+UCOSIII+LWIP 完美移植

1. 关于使用外设库和芯片选择 需定义USE_STDPERIPH_DRIVER和STM32F40_41xxx 具体在stm32f4xx.h定义或者Target Options里配置 2. 关于时钟配置 本工程外部晶振使用8M 因此需要修改外部晶振以及PLL相关的宏定义 stm32f4xx.h里配置 #define HSE_VALUE ((uint32_t)8000000) system_stm32f4xx.c里配置 #define PLL_M 8 3. 移植UCOSIII 第一步, 添加ucosiii文件 添加cpu,lib,core,port: Micrium_STM3240G-EVAL_OS3\Micrium\Software 添加ucos_config: Micrium_STM3240G-EVAL_OS3\Micrium\Examples\ST\STM3240G-EVAL\OS3 最后添加os_cpu_bsp.c和os_cpu_bsp.h,自己修改的,实现了SYSTick以及TMR的相关接口,这样可以免除添加官方bsp那些乱七八糟的东西 第二步, 修改部分文件 startup_stm32f40xx.s 如果需要增加FPU的支持,则还要对port里的三个文件进行修改 os_cpu.h os_cpu_c.c os_cpu_a.asm 3. 移植lwip,有RTOS,在无RTOS的版本上作修改 最主要就是sys_arch里实现邮箱,信号量,任务等接口 LwIP_Init里要修改: tcpip_init( NULL, NULL ); netif_add(&gnetif, &ipaddr, &netmask, &gw, NULL, &ethernetif_init, &tcpip_input); lwipopts.h修改相应参数 最后创建NET接收任务和NET应用任务

2016-09-13

STM32F407+UCOSIII 3.04

1. 关于使用外设库和芯片选择 需定义USE_STDPERIPH_DRIVER和STM32F40_41xxx 具体在stm32f4xx.h定义或者Target Options里配置 2. 关于时钟配置 本工程外部晶振使用8M 因此需要修改外部晶振以及PLL相关的宏定义 stm32f4xx.h里配置 #define HSE_VALUE ((uint32_t)8000000) system_stm32f4xx.c里配置 #define PLL_M 8 3. 移植UCOSIII 第一步, 添加ucosiii文件 添加cpu,lib,core,port: Micrium_STM3240G-EVAL_OS3\Micrium\Software 添加ucos_config: Micrium_STM3240G-EVAL_OS3\Micrium\Examples\ST\STM3240G-EVAL\OS3 最后添加os_cpu_bsp.c和os_cpu_bsp.h,自己修改的,实现了SYSTick以及TMR的相关接口,这样可以免除添加官方bsp那些乱七八糟的东西 第二步, 修改部分文件 startup_stm32f40xx.s 如果需要增加FPU的支持,则还要对port里的三个文件进行修改 os_cpu.h os_cpu_c.c os_cpu_a.asm

2016-09-13

STM32F407+LWIP

1. 关于使用外设库和芯片选择 需定义USE_STDPERIPH_DRIVER和STM32F40_41xxx 具体在stm32f4xx.h定义或者Target Options里配置 2. 关于时钟配置 本工程外部晶振使用8M 因此需要修改外部晶振以及PLL相关的宏定义 stm32f4xx.h里配置 #define HSE_VALUE ((uint32_t)8000000) system_stm32f4xx.c里配置 #define PLL_M 8 3. 移植lwip,无RTOS 第一步, ETH_MAC_DMA的初始化,PHY芯片的初始化,这里在工程f407_eth里测试 第二步, 添加lwip文件 src里是lwip官方库里的文件: lwip-1.4.1\src port里的是st官方的移植文件: STM32F4x7_ETH_LwIP_V1.1.1\Utilities\Third_Party\lwip-1.4.1\port\STM32F4x7 移植网络应用文件: STM32F4x7_ETH_LwIP_V1.1.1\Project\Standalone\udp_echo_client 第三步, 修改部分文件 main.h 改为 net_config.h 配置IP/MAC/NETMASK/GW/DHCP等 这里不使用DHCP 无操作系统时需要初始化systick来给lwip作时基,在main函数里初始化,并实现SysTick_Handler ethernetif.c是无RTOS时需要移植的文件(st已经弄好了),其实就是初始化、发送、接收

2016-09-13

空空如也

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

TA关注的人

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