- 博客(19)
- 收藏
- 关注
原创 让NanoPi 2 Fire 跑起来——从U-Boot开始
最近在咸鱼淘到一块NanoPi,算上邮费80块,还有必须的CLASS 10 TF卡28块。共108大洋 看了友善之臂的维基百科发现看不懂。。。 http://wiki.friendlyarm.com/wiki/index.php/NanoPi_2_Fire/zh#.E8.B5.84.E6.BA.90.E7.89.B9.E6.80.A7 于是写了这篇文章记录一下。 下载U-Boot...
2019-12-31 14:40:24
1884
原创 检测按键的几种方法
1、查询:耗资源,可达99% 2、中断:read一直在等待,不会返回 3、poll:指定超时时间,例:等待按键5秒,5秒无响应返回错误并往下执行程序。 以上3种方法共同特点:都是应用程序主动去read 异步通知:由驱动主动通知应用程序 同步互斥阻塞: 目的:驱动同时只能被一个应用打开,设置一个flag判断是否被打开。但linux程序是多进程的,在设置flag的过程中被打断的话,判...
2019-12-29 18:48:14
6035
原创 Linux shell下进程的命令
# top 查看系统进程信息,相当于windows的任务管理器 # ctrl c 结束当前进程 # ctrl z 挂起当前进程 # jobs -l 查看挂起的任务 # fg [任务号] 返回挂起的任务 # kill -9 %1 //结束进程1 # kill -9 4664 //结束PID为4664的进程 #dmsg 查看内核输出信息 ...
2019-12-20 15:45:28
210
原创 字符设备驱动程序
写一个LED驱动 1、写出框架 a、file_operation .open = xxx .read = xxx .write = xxx b、入口函数里注册//告诉内核 出口函数卸载 c、给sys_fs提供更多信息 udev机制可以自动创建设备节点 驱动程序写好后编译出second_drv.ko文件,然后将second_drv.ko文件拷贝到根文件系...
2019-12-19 22:43:29
379
原创 uboot、内核、根文件系统
u-boot编译 1、解压 下载U-boot在Linux下解压 2、打补丁 3、配置 make smdk2440_config 4、编译 make 然后再当前目录会生成u-boot.bin 根文件系统 目的:构建linux下的文件系统 安装busybox,构建 /bin, /linuxrc, /sbin/, /usr目录 手动创建其余文件夹,并加载根目录文件 ...
2019-12-15 10:53:55
398
原创 1期第84讲——代码重定位与位置无关码 总结
本节课程讲要点是将程序从Flash拷贝到SDRAM运行所遇到的问题。 以下为链接文件代码: //./Sdram.lds SECTIONS { . = 0x30000000; . = ALIGN(4); .text : { *(.text) } . = ALIGN(4); .rodata :{ *(.rodata) } . = ALIGN(4); .data :{ *...
2019-11-18 22:36:26
329
原创 重定位的引入
JZ2440包含的内存:SDRAM,SRAM,Nor Flash,NAND Flash 当选择NAND启动,并且代码大小超过4KB时,需要把整个程序读出,放到SDRAM。该操作叫作重定位,重新确定程序的地址。 程序包含: 代码段 text 数据段(全局变量) data rodata:const全局变量 bss:初值为0,无初值 commen:注释 ...
2019-11-15 22:30:41
245
原创 SDRAM的设置
推荐阅读文章《高手进阶,终极内存技术指南——完整/进阶版》 https://wenku.baidu.com/view/acfdfed733d4b14e8524687f.html 读取SDRAM的过程 CPU发送读内存命令给内存控制器 内存控制器进行以下操作: 1、发出对应地址的片选信号 2、根据类型(SDRAM)拆分地址: a.BANK地址 b.行地址 c.列地址 ...
2019-11-14 22:39:15
395
原创 内存时序图分析
内存相关缩写的含义 CE# --> Chip Enable,低电平有效 WE# --> Write Enable,低电平有效 OE# --> Output Enable,低电平有效 内存读取时序图中的Toh --> 当Address,CE#和OE#中的一个或多个拉高后,数据的保持时间。大白话就是当发出停止信号时数据只会保持Toh,这里Toh是0ns,所以就是当发...
2019-11-14 08:50:07
1675
原创 S3C2440 不同位宽设备的连接
S3C2440连接不同类型的内存类芯片时,地址脚有些情况是A0连接A0,有些情况是A1连接A0,为什么? 在《S3C2440A_UserManual》中有提到内存连接的方法。当2440连接一片8bit内存时,A0接到内存的A0。 当2440连接两片8bit内存时,A1接到内存的A0。 为什么需要这样连接? (有空补充完整)未接到内存的地址线用于确定数据位置。 ...
2019-11-12 21:36:12
319
1
原创 使用ST-LINK V2和openocd调试STM32时出现电压过低的问题及解决
转载请贴上原帖地址。 最近项目需要用到STM32,使用GCC+openocd的编译环境调试STM32。出现了个很奇怪的现象,单独使用ST-LINK给STM32供电,会出现触发电压过低的错误,且无法连接上STM32。 其实问题很简单,ST-LINK带有检测目标板电压的功能,如果检测到目标板电压过低,则会报错。 20pinJtag的1、2脚为TVCC,这两个引脚就是负责检测目标板的电压。...
2017-05-01 10:21:00
467
原创 在makefile下,使用-I包含.c文件中include的头文件
这是在STM32F103官方库里的一个工程,我添加了makefile文件和stlib文件夹,文件结构如下: makefile代码: 1 edit: main.o 2 gcc -o edit main.o 3 main.o : main.c 4 gcc -c main.c 编译出错,大概意思是找不到main.c中include的stm32f10x.h stm32f10x.h在该目录的...
2017-05-01 10:17:00
142
原创 关于scanf()运行时,出现“已停止工作”的解决方法
把本人遇到的问题和解决方法写出来,希望能帮助到和我一样的初学者。 是scanf()函数的变量问题 错误 scanf("%d",quantity); 正确 scanf("%d",&quantity);//第二个参数要是变量的指针 //---------------------------------------------------------------------------...
2016-09-13 21:03:00
118
原创 20160904 数据结构与算法总结
总结一下今天学的咚咚 抽象数据类型(Abstract Data Type, ADT) ADT 抽象数据类型名 DATA 数据元素之间逻辑关系的定义 Opration 操作1 初始化条件 操作结果描述 操作2 ... 操作n ... endADT ...
2016-09-04 22:52:00
85
原创 关于一个扫描Gpio的程序改善
//以一个耳机的插入拔出检测做例子 IsLineOutLink()函数实际是检测一个Gpio,当耳机插入即把Gpio拉低,IsLineOutLink()返回1。 这种扫描方式的坏处:有耳机插入或无耳机插入,都要进入代码块执行里面的代码,浪费MCU资源。 改善:添加一个Flag 定 义Flag为TRUE(一般TRUE被定义为1,FALSE为0),当无耳机插入,IsLineOutLink()返回...
2016-09-01 13:47:00
94
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅