- 博客(97)
- 资源 (4)
- 收藏
- 关注
原创 Linux 下IIC 子系统架构总结
本文中第1、2、3、4、5、6部分是参考前辈的博客总结https://blog.csdn.net/wangpengqi/article/details/177111651.IIC简介 IIC是philips提出的外设总线。 IIC只有两条线,一条串行数据线SDA;一条是时钟线SCL。使用SCL,SDA这两条线就实现了设备之间的数据交互。2.Linux下的驱动...
2018-05-18 16:46:57 2208 1
原创 一个C语音自动变量分配地址问题
char *localized_time(char *filename){ struct tm *tm_ptr; struct stat stat_block; char buffer[120]; stat (filename, &stat_block); tm_ptr = localtime(&stat_block.st_mtime); strftime(buffer, sizeof(buffer),"%a %b %e %T %Y", .
2021-06-17 09:35:07 358
转载 do {...} while (0) 在宏定义中的作用
https://www.cnblogs.com/lanxuezaipiao/p/3535626.html如果你是一名C程序员,你肯定很熟悉宏,它们非常强大,如果正确使用可以让你的工作事半功倍。然而,如果你在定义宏时很随意没有认真检查,那么它们可能使你发狂,浪费N多时间。在很多的C程序中,你可能会看到许多看起来不是那么直接的较特殊的宏定义。下面就是一个例子:...
2021-06-04 09:35:14 359
转载 C语言的头文件包含注意事项
前言:很多事不深入以为自己懂了,但真正用到项目上,才发现了问题。曾以为自己写C语言已经轻车熟路了,特别是对软件文件的工程管理上,因为心里对自己的代码编写风格还是有自信的。(毕竟刚毕业时老大对我最初的训练就是编码格式的规范化处理)曾以为,一个.c文件对应一个.h文件,.c文件只包含它自身的.h文件就好,若.c文件中用到其他文件中的内容,则.h文件把用到的头文件包含进来就可以了。自己貌似一直秉承这个理念在进行代码编写(好可怕)。工程文件数量小时,这种理念貌似看不出问题,但随着工程文件数量越来越多,我
2021-06-02 09:55:13 1423
原创 git rebase和git merge的区别
使用rebase和merge的基本原则:下游分支更新上游分支内容的时候使用rebase 上游分支合并下游分支内容的时候使用merge 更新当前分支的内容时一定要使用--rebase参数
2021-06-01 18:34:47 183
原创 u盘安装ubuntu12.04 出现从光盘上读取数据出错的 问题
使用老毛桃等工具制作u盘启动并且安装 ubuntu-12.04.5-server-amd64.iso 安装过程中出现从光盘上读取数据出错的 问题。查阅资料说是制作镜像工具的问题,推荐使用win32diskimager ,但是用win32diskimager刻录光盘后,引导也进入不了。最后尝试使用 rufus-3.13p.exe 来制作u盘启动 可以解决问题。注意:安装时候不要使用uefi模式,使用uefi模式会导致安装完成之后不能引导,只能进入bios界面。...
2021-04-19 19:28:22 788
原创 如何用Keil MDK生成LIB库并使用LIB库
参考:https://xiaopengzhen.blog.csdn.net/article/details/90036247?utm_medium=distribute.pc_relevant.none-task-blog-2%7Edefault%7EBlogCommendFromMachineLearnPai2%7Edefault-4.control&dist_request_id=1331647.11602.16183926662894565&depth_1-utm_source=dis
2021-04-14 17:50:13 1054 1
原创 如何将源文件编译成.a库文件跑在Cortex-M 芯片上
最近项目需要将源文件编译成库文件,然后跑在Cortex-M0芯片上,遇到了一些问题需要记录一下。编译环境:交叉编译环境 gcc-arm-none-eabi-5_4-2016q3-20160926-win32先整理完整的源文件,封装好接口在头文件中编译方法:Makefile :GCC_ARM_PATH :=D:\bat\gcc-arm-none-eabi-5_4-2016q3-20160926-win32CROSS_COMPILE := $(GCC_ARM_PATH)\bin\a.
2021-04-14 11:51:11 458
原创 怎样在windows的cmd命令行里面使用ls命令
习惯使用linux环境的同学,肯定非常讨厌windows下cmd中dir命令,那么怎么将dir命令换成ls呢?新建一个文本文件输入:然后保存为ls.bat ,将此文件保存在C:\Windows\System32 目录下即可。我们对Markdown编辑器进行了一些功能拓展与语法支持,除了标准的Markdown编辑器功能,我们增加了如下几点新功能,帮助你用它写博客:全新的界面设计 ,将会带来全新的写作体验;在创作中心设置你喜爱的代码高亮样式,Markdown 将代码片显示选择的高亮样式 进行
2021-03-26 16:10:32 3130
原创 unbuntu16.04安装samba文件共享服务-之进阶-账户管理
unbuntu16.04安装samba文件共享服务-之进阶-账户管理如果按以下配置smb.conf, 则,在内网内任何一台windows机器都可以不需要登录,随意访问我们的共享目录其实很多时候我们并不想这样,我们可以选择放开 valid users选项,这样只有在我们的用户列表中的账户才能通过登录,才能访问到我们的共享。如下设置,则制定了只有用户通过songchong songyong 这两个账户密码登录,当然我们可添加更多的账户。如上,我们已经指定了两个用户,现在需要添..
2021-02-25 18:13:19 212
原创 **windows下使用git diff --check 出现^M的问题**
windows下使用git diff --check 出现^M的问题当使用git diff命令查看修改时会出现^M的问题:但实际上查看代码我们并没有插入空格。这是由于每个操作系统有自己的换行符(就是当你按下”回车”后,系统会自动插入一些不可见的符号来表示一行的结束),Linux和Mac都是使用LF ,Windows 则是CRLF ,这样就造成了差异解决办法:git config --global core.whitespace cr-at-eol提交时转换为LF,检出时不转换git confi
2020-12-07 14:00:43 628
原创 win7系统开机直接进bios 不能正常启动,插u盘可以启动
朋友的win7系统笔记本电脑出问题了,拿来帮忙看看。现象:开机后直接进bios界面。 插个u盘就能正常进硬盘的windows系统。分析:以为是开机启动项不对,进bios界面,选择硬盘优先启动,保存退出,重启后并不能进系统,还是进bios。尝试:尝试使用easybcd写修复引导。 尝试使用gendisk 修复引导项。 尝试在PE里面使用工...
2019-10-05 22:13:21 3909 1
原创 搭建自己的git代码服务器
一直以来想在家搭建一个自己的git代码服务器,国庆假期终于有时间搞一搞了。这样自己在笔记本上辛辛苦苦写的代码,就可以备份到linux主机上,再也不担心某天笔记本电脑硬盘挂了,或者电脑挂了,而丢失代码。资源:一台 linux主机(作为git服务器来托管) 一台win7笔记本电脑(使用win7笔记本作为日常开发电脑)准备工作: 在linux主机上安装git:sudo apt-...
2019-10-03 20:00:06 2134
原创 source insight 4.0 source insight3.5 最舒服护眼的配色方案
source insight 最舒服护眼的配色方案,本人尝试了一天调试出来的。直接load configuration即可。source insight4.0 3.5版本的配色方案都有。source insight 3.5 :https://download.csdn.net/download/u012830148/11526655source insight 4.0 :https:...
2019-08-12 09:17:03 6864 2
转载 数组指针和指针数组的区别
参考:https://www.cnblogs.com/mq0036/p/3382732.html数组指针(也成行指针)定义:int (*p)[n];()优先级高,首先说明p是一个指针,指向一个整型的一维数组,这个数组的长度为n,也可以说p的步长为n,也就是说执行p+1时,p要跨过n个整型数据的长度。如果要将二维数组赋值给一个指针,应该这样赋值。int a[3][4];int...
2019-07-11 16:30:19 189
原创 Linux V4L2框架之 如何写摄像头驱动
要写一个摄像头驱动其实很简单,只要符合V4L2框架即可。剩下的就是对摄像头本身的操作。static int myvivi_init(void){ int error; /* 1. 分配一个video_device结构体 */ myvivi_device = video_device_alloc(); /* 2. 设置 */ /* 2.1...
2019-06-18 15:38:39 1533
原创 linux V4L2框架分析
对于Linux内核里面的众多子系统,都采用了分层的思想来实现,V4L2子系统也不例外,跟framebuffer子系统类似似。V4L2子系统也分为两层。暂且分为核心层和硬件相关层。V4L2也是字符设备驱动程序,因此也脱离不了一般驱动程序的范围。核心层:主要实现了字符设备驱动程序框架,使得驱动开发者不在关注字符设备驱动程序本身,只用关注硬件相关层即可,同事核心层也为上层APP提供了统一的访问接口,...
2019-06-16 02:43:59 1965
转载 container_of(ptr, type, member) 宏分析
转自:https://blog.csdn.net/s2603898260/article/details/79371024在linux 内核编程中,会经常见到一个宏函数container_of(ptr,type,member), 但是当你通过追踪源码时,像我们这样的一般人就会绝望了(这一堆都是什么呀? 函数还可以这样定义??? 怎么还有0呢??? 哎,算了,还是放弃吧。。。)。 这就是内核大...
2019-05-30 10:57:38 673
原创 Linux下fastboot卡在waiting for device
$ fastboot flash kernel-4-4 arch/arm/boot/uImage< waiting for device >$ fastboot devicesno permissions fastboot$ sudo chown root:root /usr/bin/fastboot$ sudo chmod +s /usr/bin/fastboot...
2019-05-23 00:00:47 4256 1
原创 tiny4412烧写uboot到emmc及更新kernel rootfs
uboot: https://github.com/zczjx/uboot_tiny4412kernel: https://github.com/zczjx/linux-4.4.38-for-tiny4412rootfs:https://github.com/zczjx/buildroot-es_udk采用火哥大神的项目玩一玩tiny4412,本篇记录一下烧写的过程,中间走了一些弯路。...
2019-05-22 23:37:08 2999
原创 buildroot编译产生的文件系统每次都要登录
用buildroot编译出来的文件系统,开机时每次都要登录。解决办法:vi /etc/inittab找到:console::respawn:/sbin/getty -L console 0 vt100 # GENERIC_SERIAL修改为:console::respawn:-/bin/sh重启之后就不会提示登录了。...
2019-05-19 23:24:35 1953 1
原创 tiny4412移植uboot-2019-01(三)
开发环境:win7 64位 + Ubuntu16.04 64位开发板:tiny4412ADK + S700 + 4GB eMMC + 1G DDR3工具链:友善之臂提供的 arm-linux-gnueabihf- (gcc version 6.3.0) //低版本的工具编译不了最新的uboot要移植的u-boot版本:u-boot-2019-01git仓库地址:https:/...
2019-04-23 18:18:00 3334 3
原创 tiny4412移植u-boot-2019.01(二) --编译环境搭建
交叉编译工具链:gcc-linaro-6.3.1-2017.05-x86_64_arm-linux-gnueabihf (u-boot-2019.01要求使用6.0以上的gcc编译器 )下载地址:https://github.com/rockchip-toybrick/prebuilts-gcc-linux-x86-arm-gcc-linaro-6.3.1-2017.05-x86_64_...
2019-04-10 17:40:32 1499
原创 lib/asm-offsets.c:1:0: error: bad value (generic-armv7-a) for -mtune= switch
最近在往tiny4412上移植最新的u-boot-2019make tiny4412_defconfig && make 以后遇到以下编译错误。lib/asm-offsets.c:1:0: error: bad value (generic-armv7-a) for -mtune= switch// SPDX-License-Identifier: GPL-2.0+...
2019-04-08 01:23:21 6148
原创 Linux系统怎样修改文件夹的所有者和所有组
chgrp 用户名 文件名 -Rchown 用户名 文件名 -R-R表示递归目录下所有文件drwxrwxr-- 19 root root 4096 4月 3 23:35 work/sudo chgrp sc work/ -Rdrwxrwxr-- 19 root sc 4096 4月 3 23:35 work/sudo chownsc wor...
2019-04-06 15:07:28 2204
原创 tiny4412裸板程序之点灯(二)
上一篇博文中我们已经编译出了裸板程序led.bin接着就是制作sd卡启动,将裸板程序跑起来。首先需要将sdcard插入PC,让ubuntu系统识别到sdcard,目前来说没有windows工具,因此只能使用真实的linux机器或者虚拟机。sc@sc-System-Product-Name:~/work/tiny4412/sd_fuse$ dfFilesystem 1K-b...
2019-04-06 12:29:57 593
转载 tiny4412移植u-boot-2019.01(一)
本文主要参考彭东林大神的博客:https://www.cnblogs.com/pengdonglin137/p/5080309.html最近打算将最新的u-boot-2019.01移植到tiny4412开发板上。要移植u-boot到tiny4412上,首先就要对着块板子的启动方式、地址空间分配有清楚的认识。看芯片手册Exynos 4412 SCP_Users Manual_Ver.0.10...
2019-04-05 16:10:34 1884
原创 tiny4412裸板程序之点灯(一)
最近折腾tiny4412开发板,先用裸板点个灯,玩一下裸板程序,后面打算移植最新的uboot和内核到tiny4412开发板上去。原理图中,4个led用到的是GPM4_0 - GPM4_4.看芯片手册:GPM4CON地址为0x110002E0GPM4DAT寄存器地址为:0x110002E4led.s.text.globl _start_start: /...
2019-04-04 10:49:33 882 2
原创 使用git hub托管自己的代码
如果想使用git hub托管自己的代码该怎么做呢?首先要在github上注册一个自己的账号,记住账号和密码。后面推送本地代码的时候会使用到。注册完之后就可以新建一个仓库填写仓库的名称、描述等。最后Create respository。这时能够看到我们创建的仓库地址,复制该地址,后面用。创建完成仓库后,还需要自己用git工具生成本地公钥,然后将公钥写配置到github上。...
2019-04-02 00:32:40 481
转载 Linux内核空间内存申请函数kmalloc、kzalloc、vmalloc的区别
原文:https://blog.csdn.net/lu_embedded/article/details/51588902 我们都知道在用户空间动态申请内存用的函数是 malloc(),这个函数在各种操作系统上的使用是一致的,对应的用户空间内存释放函数是 free()。注意:动态申请的内存使用完后必须要释放,否则会造成内存泄漏,如果内存泄漏发生在内核空间,则会造成系统崩溃。 那么,在内...
2019-03-28 22:16:20 265
原创 Unable to handle kernel paging request at virtual address e6f4b4d0
调试tiny4412LCD屏幕的时候,驱动加载的时候会挂掉。对寄存器ioremap的时候没有出错,但是访问寄存器的时候出错了。[ 187.030282] Unable to handle kernel paging request at virtual address e6f4b4d0[ 187.034416] pgd = dedc0000[ 187.037145] [e6f4b4d...
2019-03-28 14:28:32 2850 1
原创 cat /proc/kallsyms 发现内核符号表值都为0
最近调试内核,cat /proc/kallsyms 后发现符号表值都为0。检查内核配置项,该配的都已经配置。查找很多网上资料,说是内核为了防止漏洞出现,特意不让非root用户查看符号表。但是我将shell切换为root,还是只能查看到0.因此只能修改内核代码。kernel/kernel/kallsyms.cstatic int s_show(struct seq_file *...
2019-03-26 09:37:09 2449 1
原创 驱动调试之段错误分析_根据oops信息确定出错的代码位置
在内核调试过程中,经常会出现kernel painc等错致命错误导致内核崩溃,遇到这种问题可以根据oops信息逐步推断出内核出错的位置,找出出错的代码。驱动程序一般分为作为模块通过 insmod加载 和直接编译进内核中两种。利用tiny4412开发板,故意在驱动程序中引入一个指针错误。不进行ioremap,直接访问物理地址,这是非法的。第一种:通过insmod加载shell@tin...
2019-03-26 01:12:55 3054 2
转载 ubuntu16.04编译linux-3.5内核出错Can't use 'defined(@array)'
转载自:http://www.linuxdiyf.com/linux/24289.html0、开发环境Ubuntu16.04.1(64bit)linux-2.6.39.41、错误描述使用ubuntu14.04(64bit)编译linux2.6.39.4并没有出现什么错误,但是使用ubuntu16.04.1(64bit)编译linux-2.6.39.4时,却提示Can't use 'd...
2019-03-24 16:47:12 247
原创 tiny4412上调试SPI驱动
着两天弄了个OLED,想在tiny4412开发板上调试一下,顺便熟悉一下Linux内核下SPI驱动框架。内核为3.0.8,先上代码,后面分析框架。内核中涉及到的文件主要文件有:linux-3.0.86/arch/arm/mach-exynos/mach-tiny4412.c 内核中板级配置文件,较新的内核都采用设备树的方法了。linux-3.0.86/arch/arm/mac...
2019-03-21 18:11:31 984
原创 i2c 调试OLED之无ACK
最近在tiny4412上调试一款oled,此oled具有SPI 和I2c两种接口,可以供选择。SPI接口的很快调试好了。但是I2c接口的却调试了很久没有调试出来。通过逻辑分析仪抓波形,发现是oled不回复ack信号,导致所有的初始化命名都没有发送出去。但是为什么没ACK信号呢?按淘宝店家提供的资料,硬件上已经确认无误。无奈用公司的小开发去试试,也是用的硬件i2c,竟然可以点...
2019-03-21 17:04:01 6412 2
原创 Linux 中断底半部
设备中断会打断内核进程的正常执行,系统对更高吞吐率的追求势必会要求中断服务程序尽量短小精悍。但是在现实中,中断服务程序往往要进行大量耗时操作。Linux将中断处理程序分解为两个部分:顶半部和底半部。 顶半部用于完成尽量少的比较紧急的工作,往往只是简单的读取寄存器的中断状态,并清除中断标志后,就进行“登记中断”的工作,登记中断意味着将底半部处理程序挂到该设备的底半部执行队列中去,这样,顶...
2019-03-15 13:42:05 252
source insight 3.5最舒服护眼的配色方案 Jason_Styles.cf3
2019-08-12
source insight4.0最舒服护眼的配色方案 jason_cfg-3.xml
2019-08-12
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人