linux
连志安的博客
OpenHarmony龙芯架构SIG小组负责人,OpenHarmony教育工作组副组长,开源大师兄项目执行总监,
华为HDE专家,开放原子开源基金会2022开源贡献之星,广州市天河区软件协会专家委员,润和软件生态技术总监
出版书籍《物联网——嵌入式开发实战》。移植OpenHarmony到龙芯相关芯片,GD32,STM32芯片并开源。
展开
-
linux 修改 usb-serial.c 提升3G上网速度
Linux原有的USB驱动是针对低速USB设计的,,它的缓存开的太小。因此,3G上网卡的网速并没有达到evdo的正常速度。 在没有修改内核源码之前:root@DayDream:/home# ping 114.114.114.114PING 114.114.114.114 (114.114.114.114): 56 data bytes64 bytes from 114.114.114.114:原创 2015-07-08 14:03:34 · 1472 阅读 · 0 评论 -
三:监听指定地址的客户端数据
本代码提供自己创建 listen 的功能,因而可以实现服务器监听指定的客户端的数据接口函数如下: listen_t *create_listen(struct sockaddr *addr)示例:int main(void){ listen_t *listen; struct sockaddr_in addr; int ret; char buf[1204原创 2015-08-05 16:46:08 · 1154 阅读 · 0 评论 -
UDP并发服务器模型 二:select机制
上篇文章说了下 udp 并发模型。然后笔者也自己编写了一套代码,基本上能显示 udp 并发机制。大致原理参考: http://blog.csdn.net/aa120515692/article/details/47294335select机制能很好地提供多路IO功能。对于本套代码,已基本上能提供类似 select 的功能主要函数接口:void listen_head_init(struct li原创 2015-08-05 16:34:54 · 3569 阅读 · 0 评论 -
物联网开发 5 UDP并发服务器模型 一
摘要: 本文将讨论UDP的并发实现机制。给出了两种实现方法。第一种是最为常见的,TFTP传输的方式。 第二种是笔者无聊时自己编写,功能难免会比较简单、也会有许多不足。有兴趣的同学可以一起讨论,把功能做的更强大一些。 现将思路整理如下,有兴趣的同学可以一起讨论。代码稍后公布。 众所周知,通常所见的的TCP服务器都是并发实现的,即服务同时处理多原创 2015-08-05 11:20:34 · 12102 阅读 · 0 评论 -
iptables 查看客户端流量情况
参考: http://yzs.me/2212.html作为路由时的流量统计: 如果服务器是做路由的,那么使用上面的命令把规则插入至INPUT/OUTPUT链中就无效了,因为那些IP根本不是在你的服务器上。但是那些IP的流量,都需要经过你的服务器的转发,因此把对于的规则插入至FORWARD表即可。、 例如我要统计IP为192.168.0.10的服务器入网流量: iptables -I FORWA转载 2015-10-09 09:54:17 · 2882 阅读 · 0 评论 -
iptables 实现流量监控,重定向: 一
iptables 重定向可以使用如下命令: iptables配置规则:iptables -t nat -A PREROUTING -p tcp --dport 80 -s 192.168.1.223 -j DNAT --to 61.55.167.115其中: 192.168.1.223是需要实现IP重定向的设备IP地址 61.55.167.115 指明了重定向到何处iptables 显示每个客户原创 2015-08-06 20:35:24 · 5915 阅读 · 0 评论 -
linux I2C驱动 :整体架构(1)
有一篇很不错的文章,可以看这篇:https://www.cnblogs.com/xiaojiang1025/p/6500540.html本文更重要的是一些要点的记录:I2C 驱动分为: I2C 核心、I2C总线驱动、 I2C 设备驱动I2C 核心:提供I2C总线驱动和设备驱动的注册、注销方法等等。I2C总线驱动:对I2C硬件体系中适配器的实现。主要有...原创 2019-02-28 09:46:20 · 387 阅读 · 0 评论 -
I2C设备驱动流程
本文分析 mpu6050_drv.c 中 I2C 驱动部分的module_i2c_driver()这个宏来注册i2c_driver,这个宏在/include/linux/i2c.h定义,注释上说用它来注册一个i2c_driver,并通过调用它代替module_init()我们可以看下它的原形:#define module_i2c_driver(__i2c_drive...原创 2019-02-28 10:29:06 · 959 阅读 · 0 评论 -
linux 块设备驱动
块设备 和 字符设备是并行的概念可以参考内核源码:z2ram.c 总结来说,gendisk 负责注册一个块设备gendisk->queue = z2_queue; //负责指向请求队列blk_init_queue(do_z2_request, &z2ram_lock); //负责把请求队列和处理函数绑定起来static void do_z2...原创 2019-02-28 11:47:21 · 444 阅读 · 0 评论 -
字符驱动
1、设备号: devno每个驱动都有自己独立的字符驱动MKDEV(major , minor)MAJOR(dev)MINOR(dev) 2、注册一个设备号int register_chrdev_region(dev_t from, unsigned count, const char *name)——已知设备号,注册int alloc_chrdev_reg...原创 2019-02-25 16:20:53 · 863 阅读 · 0 评论 -
uboot 中断流程
有了前面两节的基础,我们来看 uboot 中断流程就很简单了裸机中断流程https://blog.csdn.net/aa120515692/article/details/88116196linux中断流程https://blog.csdn.net/aa120515692/article/details/88124139首先看 arch/arm/cpu/start.S====...原创 2019-03-05 09:15:37 · 1218 阅读 · 0 评论 -
网络驱动2 流程分析
事实上,网络驱动也是一种平台总线驱动。我们这里可以大致简单的分为:1、平台总线驱动部分,这部分主要是用于去注册网络设备驱动部分2、网络设备驱动部分,这里的一些概念我们要看上一篇文档我们以 DM9000 为例分析我们 可以看到,实际上它就是注册了一个 dm9000_driver 的驱动设备static int __init dm9000_init(void){p...原创 2019-03-05 16:23:18 · 335 阅读 · 0 评论 -
ucp2p 库:二、编译使用
下载源码: 首先,由于公司网络不让上传,百度云那个比较旧。所以源码找本人要一份,联系QQ 120515692准备好编译环境; 个人编译环境、测试环境均为 Ubuntu-1204 gcc-4.6 make下载安装好依赖库: P2P 客户端依赖库有 : libthread openssl libjson P2P 服务器依赖库有: libt原创 2015-08-03 12:47:07 · 1428 阅读 · 0 评论 -
ucp2p 简单的P2P c库 二:协议分析
传输协议: 代码使用服务器中转、UDP 打洞这两种方式进行对 nat 的穿透,以实现P2P传输功能 传输协议使用 udp。数据加密: 为了保证P2P传输的安全性,所有数据在发送之前都经过数据加密,加密算法为 AES256. 同时,在每个数据包的包头都增加了 密码 验证以及 crc 校验码。udp打洞原理: 由于nat的特性,使得不同内网之下的主机之间原创 2015-08-03 11:15:32 · 1352 阅读 · 0 评论 -
ucp2p 库:三、配置文件
配置文件 p2p_client 启动后会去读取配置文件: sys_info.json 如果没有该配置文件,则采用默认的配置并生成新的 sys_info.json 文件 内容如下: { "log_path": ".\/", "name": "Jack", "passwd": 305419896,原创 2015-08-03 12:50:10 · 806 阅读 · 0 评论 -
linux 设置默认网关
ping 114.114.114.114 都是ping不通,提示如下:root@DayDream:/# ping www.baidu.comping: bad address 'www.baidu.com'root@DayDream:/# ping 114.114.114.114PING 114.114.114.114 (114.114.114.114): 56 data bytesping:原创 2015-07-06 16:09:20 · 9095 阅读 · 0 评论 -
linux c编程中调用 shell 命令
system 函数,会调用fork()产生子进程,由子进程来调用/bin/sh-c string来执行参数string字符串所代表的命令,此命令执行完后随即返回原调用的进程。在调用system()期间SIGCHLD 信号会被暂时搁置,SIGINT和SIGQUIT 信号则会被忽略。/*******************************************************原创 2015-07-07 14:51:06 · 798 阅读 · 0 评论 -
交叉编译expect
交叉编译 expect 需要先编译如下依赖包:tcl tcl源码下载: wget http://nchc.dl.sourceforge.net/sourceforge/tcl/tcl8.4.11-src.tar.gz 我的目标主机是一台运行着openwrt系统的x86机器。工具链为 i486-openwrt-linux-./configure --prefix=$PWD/tmp --host=原创 2015-07-29 09:58:52 · 2900 阅读 · 0 评论 -
Makerfile
下面是个例子: all : client server 表示最后会生成两个目标文件。CC=gcc#CC=mipsel-linux-gccCCFLAGS+=-g -O -WallLDFLAGS+=-g -O -Wallifeq ($(CC), gcc) INC = -I/usr/include/mysql -L/usr/lib/mysql LDLIB = -lpthrea原创 2015-08-10 16:27:39 · 756 阅读 · 0 评论 -
iptables 防火墙笔记 3 :黑名单脚本
利用 iptables 实现黑名单: 首先,设置 FORWARD 默认策略为信任:ACCEPTiptables -P FORWARD ACCEPT例如,我们想要让用户无法访问 百度。我们只需要设置 FORWARD 链上。目标为 百度 的所有数据丢弃即可:iptables -I FORWARD -d m.baidu.com -j DROP既然知道了这个原理。我们便可以写一个简单的黑名单脚本文件,把原创 2015-07-18 20:42:41 · 3345 阅读 · 0 评论 -
iptables 防火墙笔记 2
重零开始,构建自己的防火墙1 清除防火墙规则iptables -F这时候。我们发现手机连接rt5350.上不了网了。查看 iptables 规则:2 查看防火墙规则root@goldsunny:/# iptables -LChain INPUT (policy ACCEPT)target prot opt source destination原创 2015-07-18 15:14:19 · 967 阅读 · 0 评论 -
IPtables 防火墙笔记 1
虽然 openwrt 的防火墙规则可以使用 uci 命令进行配置。配置文件位于 /etc/config/firewall 通过分析 /etct/init.d/firewall 脚本文件。我们可以知道实际上执行防火墙功能的程序是 fw3 不过。openwrt 作为一个 linux 系统,也是支持 iptables 的。所以。掌握了 iptables 。输入 iptables -L 查看当前防火墙规原创 2015-07-18 13:19:49 · 2048 阅读 · 0 评论 -
pthread 线程库编程 一:线程与互斥锁 mutex_lock
1 线程的概念: 在类Unix操作系统(Unix、Linux、Mac OS X等)中,都使用Pthreads作为操作系统的线程。2 创建一个线程: pthread_t p2p_thread; pthread_attr_t p2p_thread_attr; pthread_attr_init(&p2p_thread_attr); //初始化进程属性 pt原创 2015-08-01 16:39:57 · 1155 阅读 · 0 评论 -
mysql 添加 删除字段
SHOW DATABASES; //显示有多少个数据库create database rt5350_user_list; //创建一个数据库 use rt5350_user_list; //使用该数据库show tables //显示有多少个表格CREATE TABLE mytable (name VARCHAR(20), pas原创 2015-07-21 14:14:49 · 623 阅读 · 0 评论 -
thread 线程库编程二: 条件变量 cond_wait
1 条件变量: 条件变量是利用线程间共享的全局变量进行同步的一种机制,主要包括两个动作:一个线程等待”条件变量的条件成立”而挂起;另一个线程使”条件成立”(给出条件成立信号)。为了防止竞争,条件变量的使用总是和一个互斥锁结合在一起。2 定义并初始化条件变量、互斥锁: static pthread_mutex_t recv_mtx = PTHREAD_MUTEX_INITIALIZER; sta原创 2015-08-01 17:35:55 · 808 阅读 · 0 评论 -
ucp2p ,一个简单的P2P库
ucp2p 库是一个简单利用 udp 打洞 以及 服务器中转 方式实现简单 P2P 通信的 c 库。该库属于个人兴趣,任何人可以修改、使用本源码。稍后,我会整理资料,把里面的实现细节跟大家分享、学习。有兴趣的朋友也可以一起讨论,学习。该库版本为 1.0 ,测试版,仅供大家学习参考。如果使用过程发现有bug,请联系卫鞅 QQ(120515692)源码下载链接: http://pan.baid原创 2015-08-02 20:32:12 · 2348 阅读 · 0 评论 -
【裸机】浅分析 2440 中断是如何从0x18地址运行到0x30000000 + 0x18
此篇主要是分析裸机的,后面会有一篇分析 linux下面的中断原理总所周知,2440 启动后,都是从 0 地址开始,我们分析 nand flash 启动流程:1、nand 启动,会拷贝 nand flash 的前面4k 到片内 ram 运行。2、初始化 ram 后,从nand 中读取数据到 ram,再跳转到 ram 中运行此时我们就有个疑问了?如果后面我们的程序都...原创 2019-03-04 14:34:46 · 1173 阅读 · 0 评论