- 博客(26)
- 资源 (7)
- 收藏
- 关注
原创 [嵌入式] SSH使用(二):使用VSCode远程调试Linux上的代码,并设置免密登陆
VSCode远程免密登陆Linux,远程编辑调试代码。
2022-07-23 12:22:58 629 1
原创 [嵌入式] 重温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 405
原创 [嵌入式] 重温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 488
原创 [嵌入式] 重温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 562
原创 [嵌入式] 使用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 413
原创 [嵌入式] 重温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 1068
原创 [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 7159 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 2011 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 111
原创 [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 75
原创 [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 99
原创 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 4761 8
原创 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 8908 8
原创 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 4652 8
原创 [LDD3速记]_PCI驱动程序
总线由电气接口和编程接口构成 PCI(Peripheral Component Interconnect,外围设备互联)一、PCI接口目标:获得在计算机和外设之间传输数据时更好的性能,尽可能的平台无关,简化往系统中添加和删除外设的工作
2013-07-10 16:17:03 715
原创 [LDD3速记]_内核的数据类型
一、内核的数据类型1. 标准C语言类型 内核内存地址通常是unsigned long,指针和long整形大小总是相等的2 长度明确的类型 用途:匹配预定义的二进制结构;与用户空间通信;在结构体中插入填白(padding)字段来对齐数据 如果一个用户空间需要使用这些类型,可以在名字前面加上两个下划线作为前缀(u32)
2013-07-08 16:56:24 479
原创 [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 620
原创 [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 683
原创 [LDD3速记]_per-CPU变量
一、特性 当建立一个per-CPU变量时,系统的每个处理器都会有改变量的特有副本 对per-CPU的访问无需锁定 可以保存在高速缓存 eg.:网络子系统(的计数器)二、接口#include DEFINE_PER_CPU(type, name);/* 编译期间创建per-CPU变量 */DE
2013-07-04 10:58:30 611
原创 [LDD3速记]_内存分配
一、kmalloc函数原型:#include void *kmalloc(size_t size, int flags);最终总是调用get_free_pages(GFP)实现1. flags参数 常用的标志: GFP_KERNEL:运行于进程上下文,可休眠以等待一个页面(休眠时内核把缓冲区的内容刷写到硬盘,或者从一用户进程换出内存,以获取一个内存
2013-07-04 10:19:33 479
原创 [LDD3速记]_tasklet、工作队列、共享队列
tasklet一、用途 中断管理二、特性 1. 与内核定时器相比: 相同点:中断期间运行(在“软件中断”上下文以原子的模式执行)、在调度它的CPU上运行、接收一个ulong参数 不同点:不能在某个给定的时间定时执行 2. 可被禁止或重新调用;只有启动和禁止的次数相同时tasklet才会t被执行
2013-07-03 14:36:52 585
原创 [LDD3速记]_内核定时器
一、用途用于在未来某个特定的时间点(基于时钟滴答)调度执行某个函数,同时在时间点到来前不会阻塞当前进程。eg:轮询设备状态、关闭软驱马达二、特性1. 是一个数据结构2. 任务可重新运行(自己注册)3. 只会在注册自己的处理器上运行4. 异步执行,故在单处理器系统上,是竞态的潜在来源(定时器访问的数据结构需进行并发访问保护:原子变量或自旋锁)三、接
2013-07-02 17:51:51 492
u-boot-2010.03-tekkaman-master.zip
2021-05-11
Linux下开发STM32测试工程.7z
2021-03-12
STM32F407+UCOSIII+LWIP 完美移植
2016-09-13
STM32F407+UCOSIII 3.04
2016-09-13
STM32F407+LWIP
2016-09-13
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人