- 博客(18)
- 收藏
- 关注
原创 使用Wireshark实现串口拦截
Debug时候有时候需要对串口进行拦截监视,以前在WinXP, Win7 都有几个软件可以使用,比如 AccessPort, Comspy等,但是在Win10上,这些软件都没办法用了,问题是com端口无法重复打开,可能跟Win10对权限管理比较严格有关系。没办法只能继续找解决方案。 忽然灵光一现,想到Wireshark一直专注在网络拦截,是不是有可能会有串口的拦截呢?打开Wiresh...
2018-03-22 14:08:17 17404 2
原创 ctags with depend
目的:在Linux环境里实现类似Windows IDE 环境以project方式查询代码,不会查到project以外代码里的内容。特别是在代码支持很多平台,很多函数定义都有很多份情况下。实现方式:以make编译产生出来的depend (*.d) 文件为基础,用 sed 做格式整理,然后给ctags 做tag.代码:#!/bin/bashfind . -name *.d
2017-12-29 10:07:30 285
原创 从Dying gasp功能看Linux的响应速度
前一阵子在做dying gasp功能测试,过程中恰好测试到了Linux的响应速度,特来分享一下。这里的dying gasp是用GPIO(input mode)实现的,在DC掉电的时候,此GPIO会立即被拉低, 而系统的3.3V电压还能维持10ms左右时间,这样在这个时间里便可以做些通知功能告诉外面的设备。GPIO信号侦测用interrupt方式实现,为了量测方便,在 中断服务程序(isr)
2017-09-13 16:19:35 2264
原创 Zephyr简单使用
Zephyr 官网https://www.zephyrproject.org/简介Zephyr 是一个为了IoT设备使用的RTOS, 是 Linux Foundation 开发的。 看到有几个好处: 1.架构和Linux非常相似,使用起来很顺手 2.Apache license, 限制少,适合商用应用SDK环境搭建Follow 官方的文档 https://www.
2017-09-13 15:03:21 3086
原创 ecos vector.S 分析II: exception/interrupt
mips cpu 产生exception/interrupt后,cpu 会跳到特定的几个地址上,BEV=0时,一般的在0x80000180,当然还有些其他地址,详细的要去看mips书籍这里有这样的代码FUNC_START(other_vector) mfc0 k0,cause # K0 = exception cause nop and
2017-09-13 22:18:24 1023
原创 MIPS CPU 简单分类
分类:- R2000/R3000 MIPS I Intruction set- R4000 MIPS III Intruction set -- MIPS32 4K five-stage pipeline32bit address and data pathscache 16KB 4KE 4KC 4KF -- MIPS32 24K http:/
2017-09-13 22:12:41 5320
原创 UrJTAG 使用和扩展
工作需要,时常要通过JTAG 做flash program, 一般的ICE软件也可以做,但是我们手上的几个不同类型的总是不是那么完美,要么因为software license的问题,软件没法用在某些新的芯片上;要么只能支持某一类型的芯片;还有时候莫名其妙就是不能写flash,所以觉得有必要研究一下JTAG的工作原理。 网上有很多这样的小工具和软件,在dd-wrt/open-wrt上面也有很多人在
2017-09-13 17:51:57 4825
原创 Flash erase/program 检查方法
注意:读本篇文章要对flash的操作有些基础知识,或者要找份datasheet来看看。 有两种方法Data polling 和Toggle bitData Polling在erase/programcmd写下去之后,Q7位会变成data取反(因为erase后是0xff,所以这时Q7=0),然后直到erase/program操作结束,Q7才会变成实际的data。也就是flash
2017-09-13 17:51:33 2025
原创 Cache在Driver中的使用简介
1.Cache的两个类型 --Write Through 当写数据进Cache时,也同时更新了相应的Memory里的内容 --Write back 只是写到Cache里,Memory的内容要等到cache保存的要被别的数据替换或者系统做cache flush时,才会被更新。2.Cache的两个函数 --Flush 把Cache内容写回Memory,当Cache为
2017-09-13 17:51:23 1323
原创 ARM 与 MIPS 比较
[前言] 这是一个几年以来我一直想做的“功课”,之所以称之为“功课”,而不能说是“文章”,是因为我觉得自己的知识还远远不够,不管是深度还是广度,也不管是全面性还是透彻性,我都不敢企及。但是我实在是很想把我的一些理解写出来,然后能和其他朋友一起探讨,纠正错误,补充完善,最终目的就是要加深对ARM和MIPS 这两种CPU架构的认识。 这里的目前最多只能算个草稿吧,待以后不断的补充。
2017-09-13 17:51:08 8815
原创 ARM CPU 简单分类
分类:- ARM7 系列 ARMv4T intruction set (but ARM7EJ use ARMv5TE) Core:ARM7TDMI 、 ARM7TDMI-S 、ARM720T 、 ARM7EJ No MMU 三级流水线- ARM9 系列 ARMv4T intruction set Core:ARM920T 、 ARM922T 和 ARM940T 5 级整数流水线- ARM9E 系列
2017-09-13 17:50:50 712
原创 switch芯片上的QoS,VLAN介绍
Switch芯片上的VLAN一般有两种:1.port based VLAN port就是一个RJ45接口。 以port为基础来定义VLAN组,比如port0,port1是一个VLAN组,port2,port3是一个VLAN组。 这种VLAN一般会用来隔离不同的网络。2.802.1Q VLAN 通过区分802.1Q标签所带的VLAN ID值不同来划分到不同的VLAN组。
2017-09-13 17:50:35 3943
原创 有线/无线网卡驱动原理简介
网卡里一个概念叫descripter,它是DMA和CPU交换控制的一个固定结构链表。在初始化的时候,申请一定数目的和descripter的结构一样大小的内存给网卡。对于收包方向上,还要申请同样数目的packet buffer挂在这些descripter上。发包方向上,只在要发包的时候把要发送的这个packet buffer挂在当前的descripter上,初始化的时候并不需要申请。 初始化还
2017-09-13 17:50:32 1826
原创 ecos kernel 分析
ecos kernel 是个典型的抢占式多任务的rtos,我这里想从代码上,把它的实现搭个框架出来。 分时的多任务系统是靠定时时间中断实现的,所以我从这里做切入点有kernel 的ecos重写了interrupt 处理代码,原来的在drv_api.c里实现的,现在的在kernel/intr/intr.cxx里,时间中断的注册在kernel/common/clock.cxx里Cyg_RealT
2017-09-13 17:50:17 631
原创 ecos vector.S 分析I: 主干部分
##-----------------------------------------------------------------------------## Hardware supplied vectors .set noreorder .section ".reset_vector","ax" # Reset vector at 0xBFC00000>>c
2017-09-13 17:50:02 401
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人