openwrt swconfig stack trace分析
接上一篇博客 watchdog bite导致系统重启问题的调试 ,打开调试功能后开始压力测试,在测试过程中发现DUT每隔2s打印一次以下异常信息 BUG: sleeping function called from invalid context at kernel/locking/mutex.c:616 in_atomic(): 1, irqs_disabled(): 0, pid: 9465, name: swconfig INFO: lockdep is turned off. CPU: 2 PID: 9465 Comm: swconfig Tainted: P W 3.14.77 #1 [<c021561c>] (unwind_backtrace) from [<c0211d44>] (show_stack+0x18/0x1c) [<c0211d44>] (show_stack) from [<c062ea98>] (dump_stack+0x9c/0xd4) [<c062ea98>] (dump_stack) from ...
watchdog bite导致系统重启问题的调试
背景说明ST在做stress test过程中发现一个bug,DUT会在工作一段时间后重启,重启原因是watchdog bite [Thu Sep 26 09:21:59.734 2019] Watchdog bark! Now = 831425.568038 [Thu Sep 26 09:21:59.734 2019] Causing a watchdog bite! [Thu Sep 26 09:21:59.734 2019] Configuring Watchdog Timer [Thu Sep 26 09:21:59.734 2019] Wa 但是无法确定根本原因是什么,是什么导致的死锁,让watchdog没办法在规定时间内bark。为此,我们需要启用相关的内核调试手段去获取相关信息,然后深入分析crashdump和console log。 内核裁剪启用ftrace Ftrace is an internal tracer designed to help out developers and designers of systems to find what is go...
Python网络爬虫7 - 爬取表情包
为了逗女朋友开心,想找一堆表情包,那么作为一名程序员,自然是会想到用程序来完成这个事情,而Python爬虫就是一个非常好的方法。 我先找到了一个专门发布表情包的网站,就叫做发表情网,可以通过搜索关键词得到大量相关的表情包,下面对这个网站的爬取进行详细介绍。 分析站点为了不引起不适,我选择搜索“你好”,出来的结果是这样的 可以看到共有688个相关的表情,右侧的表情包是分组形式的,不是我的爬取对象。我们只关注表情,在网页底部可以看到分页信息: 切换分页到第4页后,可以看到网址的编号情况如下: 网址是https://www.fabiaoqing.com/search/search/keyword/你好/type/bq/page/4.html,据此就可以分析出表情的分页格式 keyword 后接关键词,此处为“你好” type 后接类型,此处为"bq",对应表情 page 后接页码,此处为"4.html",对应第4页 到此就确定了关键词和分页信息的整合方式,根据这个可以按顺序获取指定关键词的所有分页。那么接下来的问题是如何解析每个分页中...
嵌入式设备在无法使用网络和USB的情况下如何进行文件传输
问题背景ST 测试时出现一个问题,路由器(采用Openwrt系统)的console无法正常显示shell提示符,正常情况下是 root@DeviceName:/# 这样的,出问题时是下面这样的,用户名不见了,设备名变成了none. @(none):/# 不仅如此,执行ls发现根目录很多文件都不存在了。最初我和组长认为可能是存储固件的nand flash出了问题,所以想把固件dump出来换到另一块板子上,所以先使用nanddump指令把固件保存到fw.img文件中: nanddump /dev/mtd8 -f /tmp/fw.img 接着想要通过tftp传到外面,但是失败了,ifconfig查看网络信息发现没有任何IP,ps查看进程信息发现绝大部分进程都没有启动,很显然,缺失的文件过多,板子无法正常使用网络传输了。那么USB呢,对了我用的这款路由器带有USB功能,插上以后没有任何反应,不过也是意料之中,相关的USB检测进程木有起来呗。 那么现在问题来了,在无法使用网络和USB的情况下,如何把数据从板子copy到PC呢?下面介绍两种方法。 解决方法uboot tftp文件传输...
使用正则模糊匹配的ftp文件传输
通常而言,FTP传输过程中,客户端在完成账户认证后,需要指定具体的文件路径方能下载或删除服务器端的文件。但是在使用命令行指令去操作ftp数据时,如果每次都要输入完整的路径就太麻烦了,而且如果想要同时下载多个文件还需逐个执行下载指令,那有什么方法可以通过正则表达式去完成模糊匹配和批量下载呢?本文就来介绍一下FTP数据传输的常用操作及正则匹配的实现方法。 常用的ftp客户端在介绍ftp数据传输之前,简单介绍下常用的几款ftp client: ftp lftp(支持ftp, http, https, sftp, fish, torrent, fxp, ...) sftp(Secure File Transfer Protocol) FileZilla(图形化软件,支持ftp, ftps, sftp) ftp是最基本的ftp客户端,高效但不安全,数据传输过程中使用明文,容易被截获和篡改。lftp是非常强大的一款文件传输工具,支持多种文件传输协议,功能强大,支持递归镜像整个目录及断点续传等,也是本文采用的ftp客户端。sftp是ssh的一部分,支持加密传输,与ftp语法基本一致,...
Python网络爬虫6 - Scrapy爬取vmgirls
今天介绍一个妹子站点图片的爬取过程,站点唯美女生。站点结构非常简单,单独用requests库或者scrapy框架都可以。本文介绍的是使用scrapy框架爬取。 分析vmgirls站点站点做的非常清新唯美,结构简洁明了,主页的主体部分以卡片形式展示各个主题的缩略图和简要介绍,但主页并不适合直接爬取。 不过幸好该站点已经提供了站点地图,对于这种相对简单的网站,使用现成的网站地图简直事半功倍。 那么思路就很清楚了,首先通过站点地图获取所有主题页面的网址和标题,然后逐个爬取妹子页面,提取所有的图片url,然后下载到本地,每个主题页面的图片单独存放到一个文件夹中。 站点地图本站点提供了两个站点地图: https://www.vmgirls.com/sitemap.shtml https://www.vmgirls.com/sitemap.xml 第1个是面向用户的站点地图,从主页的导航栏就能找到;第2个(如下图)则是常规网站留给搜索引擎的站点地图,文件格式也是常规的xml 我使用wget指令获取两个文件,并进行了对比,发现sitemap.xml仅仅包含1000个网址,但是可...
高效思维导图应用训练
上周在公司进行了一天的思维导图培训,感觉收获颇丰,有必要总结一下。 思维导图概述定义思维导图主要用于解决以下三个问题: 记不住 理不清 想不出 这三个也是工作效能低下的主要原因。那究竟什么是思维导图呢? 思维导图是表达放射性思维的图形思维工具。用图文技巧,把各级主题关系用层级图表现,将关键词与图像、颜色等建立思维链接。用全脑机能,使在科学与艺术、逻辑与想象间平衡,开启大脑潜能。 思维导图包含以下6大要素,其中,中心主题直接决定思维导图的内容。所谓左逻右艺,左脑负责逻辑思维,右脑负责艺术想象。下面的1、2、6由左脑负责,3、4、5由右脑负责,关系的本质是内在逻辑。 那我们如何判断一个图是否是思维导图呢?可以根据以下两点: 图形是否发散 是否具备必不可少的三个要素(上图中的1、2、3) 由来接下来简单了解下思维导图的由来。思维导图由英国托尼-博赞Tony Buzan先生发明,他是受名人笔记(包括达尔文、达芬奇和爱因斯坦的笔记,他们的笔记都是图文形式而且呈发散状)和神经元细胞外形的启发。这些图形的特点是: 一中心多枝条,枝条绕中心画,主干粗分支细,条条连不分家 ...
哈希表的实现与常见操作
前段时间基于数组和单链表以拉链法写了个哈希表,实现了基本的增删改查(CRUD),以键值对的形式存储一些配置参数,便以此文记录一下。 数据结构#define TABLE_SIZE 101 #define KEY_SIZE 32 #define VALUE_SIZE 128 #define BUF_SIZE 256 #define DATA_PATH "data.txt" struct linklist { char key[KEY_SIZE]; char val[VALUE_SIZE]; struct linklist *next; }; struct linklist *hashtbl[TABLE_SIZE]; 简单起见,使用两个字符数组分别用于存储键key和值value,每个键值对都以单链表linklist的一个节点形式存储。哈希表hashtbl数组存储每个单链表的头部指针head。 哈希函数对于字符串的哈希函数,我选择了《算法》第4版提供的一种叫 Horner 的经典算法,用 N 次乘法、加法和取余来计算一个字符串的散列值...





