
笔记
文章平均质量分 57
大侠课堂
大侠专注嵌入式领域十年,一直从事嵌入式驱动开发工作,具有丰富的BSP调试经验,有一些经验和工作方式,可以共享给大家,以便于大家加快学习和问题定位调试
展开
-
串口问题排查-时序异常
问题背景采用新塘处理器NUC972 使用该芯片所有的串口 UART1~UART10测试发现串口数据读取异常采用测试串口终端SSCOM问题还原步骤内核已经配置了所有的串口功能,串口PIN复用正常设备启动可以识别10个串口~ # ls /dev/ttyS*/dev/ttyS0 /dev/ttyS10 /dev/ttyS3 /dev/ttyS5 /dev/ttyS7 /dev/ttyS9/dev/ttyS1 /dev/ttyS2 /dev/ttyS4 /dev/t原创 2020-07-31 14:55:27 · 1166 阅读 · 0 评论 -
深入分析线程与进程的区别
很多面试者都愿意问一下 进程和线程的区别,搜一下百度的大家的理解总体来说比较抽象,主要有两个含义没有深入讲清楚1.什么叫共享地址空间?这个地址空间只的是什么2.什么叫进程开销大 线程开销小为什么?共享地址空间每个进程和线程都会通过task_struct 这么一个结构体去维护这个结构体主要就是保存着进程或线程在内存调度所使用的资源struct task_struct { volatile long state; /* -1 unrunnable, 0 runnable, >0 stop原创 2020-07-23 09:48:20 · 167 阅读 · 0 评论 -
linux内核调度策略总结
在网上搜了一些资料 几乎都在说linux有三种调度流程调度策略含义SCHED_OTHER分时调度SCHED_FIFO实时调度策略,先到先服务SCHED_RR实时调度策略,时间片轮转其实我认为总结不到位的,其实内核中是支持7种调度策略的/* * Scheduling policies */#define SCHED_NORMAL 0#define SCHED_FIFO 1#define SCHED_RR 2#define SCHED_BATCH原创 2020-07-22 09:51:07 · 440 阅读 · 1 评论 -
进程调度时间计算方式
最新版linux3.10支持CFG调度策略CFG调度时分配给每个进程的时间片是多少?分配给进程的时间 = 总的cpu时间 * 进程的权重/就绪队列(runqueue)所有进程权重之和CFS调度器针对优先级又提出了nice值的概念,其实和权重是一一对应的关系。nice值就是一个具体的数字,取值范围是[-20, 19]。数值越小代表优先级越大,同时也意味着权重值越大,nice值和权重之间可以互相转换。内核提供了一个表格转换nice值和权重。const int sched_prio_to_weight[4原创 2020-07-21 13:40:42 · 2325 阅读 · 0 评论 -
O(n)、O(1)和CFS调度器(Linux内核调度)
一、前言随着内核版本的演进,其源代码的膨胀速度也在递增,这让Linux的学习曲线变得越来越陡峭了。这对初识内核的同学而言当然不是什么好事情,满腔热情很容易被当头浇灭。我有一个循序渐进的方法,那就是先不要看最新的内核,首先找到一个古老版本的内核(一般都会比较简单),将其吃透,然后一点点的迭代,理解每个版本变更背后的缘由和目的,最终推进到最新内核版本。本文就是从2.4时代的任务调度器开始,详细描述其实现并慢慢向前递进。当然,为了更好的理解Linux调度器设计和实现,我们在第二章给出了一些通用的概念。之后,我原创 2020-07-21 11:20:40 · 621 阅读 · 0 评论 -
Linux内存管理 内存检测技术(slub_debug/kmemleak/kasan)
https://www.cnblogs.com/arnoldlu/p/8568090.htmlLinux常见的内存访问错误有:越界访问(out of bounds)访问已经释放的内存(use after free)重复释放内存泄露(memory leak)栈溢出(stack overflow)不同的工具有不同的侧重点,本章主要从slub_debug、kmemleak、kasan三个工具介绍。kmemleak侧重于内存泄露问题发现。slub_debug和kasan有一定的重复,部分slub_原创 2020-07-20 16:22:10 · 1204 阅读 · 0 评论 -
Linux内核之slab调用原理
什么是slab?大家在一开始学习内核的时候 书中一直提高slab功能在深入了解slab功能的时候 可以先思考两个问题1.什么是slab?2.它存在的意义是什么?什么是slab百度一下 是一个形容词,代表一种坚硬的东西,换中国思维来考虑那就是一个利器,是分配内存的尚方宝剑。slab存在的意义?linux内存既然有buddy系统分配页内存,为什么还要用slab?buddy分配内存只能分配页的问题,但是slab分配可以解决几十个字节的分配问题设想一下 如果 你的内存只有64M 还要跑linu原创 2020-07-20 11:14:52 · 2798 阅读 · 0 评论 -
Linux内核内存泄漏排查手段
作为一个合格的BSP开发人员,在工作中会碰到各种内存泄漏的问题,遇到该问题的时候要如何确认问题原因和排查方向 这是大家一直比较关心的问题,接下来我主要介绍几款BSP工程师排查内核内存泄漏的手段和方式内存泄漏之kmemleak内存泄漏指的是申请的内存没有及时释放 导致内存不够用,这个时候就需要定位到底是哪个哪个模块哪个函数出现了问题最简单有效的手段是kmemleak;kmemleak会去跟踪kmalloc、vlmalloc等使用情况,把没有释放的内存dump出来,废话少说先上操作流程1.打开内核配置选原创 2020-07-17 16:15:29 · 1320 阅读 · 0 评论 -
嵌入式之SD卡异常问题分析
SD卡异常问题分类解决嵌入式存储对SD卡的使用是比较普遍的,如何把SD卡的性能用到极致避免出现各类问题,需要大家在代码的设计过程中实现异常错误处理。SD卡问题主要有以下3个1.SD卡无法识别2.SD卡只读问题3.SD卡读写异常SD卡无法识别针对问题一SD卡无法识别,大家重点跟踪一下SD卡的初始化流程,该问题还是比较容易定位的,这里不详细描述以后有时间在和大家探讨一下流程问题SD卡只...原创 2020-01-09 23:27:21 · 1423 阅读 · 1 评论