ubuntu22上使用qemu-system-arm调试linux qemu是用软件模拟硬件解析指令运行的软件,可以模拟arm、arm64、x86等,对于调试linux 内核机制很方便,不用额外购买开发板。由于linux上有对qemu的加速引擎,支持程度更高,且网络上教程居多,所以这里使用virtualbox+ubuntu22虚拟机,在ubuntu上运行qemu进行模拟。
linux早期内存管理:memblock完全介绍 linux启动阶段,在伙伴系统初始化之前,也是需要动态内存分配的,比如dts、sparse_vmemmap、页表等,称早期内存管理,early mem manger。此阶段采用简单的内存管理器,有bootmem和memblock,bootmem是早期内核采用。4.x以后内核内核采用memblock,配置了NO_BOOTMEM宏。......
FSM有限状态机golang实战 FSM有限状态机FSM:finite state machion,有限状态机。两种实现方式:简单switch case适用于简单的状态机int stateMachion(int event){ switch(curSate) { case sleeping: switch(event) { case hungary: eatIt(); curState = eating; ..
UBI文件系统镜像制作 UBI文件系统镜像制作ubifs文件系统镜像分为制作分两步,分别是:1)mkfs.ubifs工具制作UBIFS文件系统镜像2)ubinize添加UBI卷信息mkfs.ubifs只是制作了UBIFS文件系统镜像,但其要能通过烧录器烧片,必须使用ubinize工具把UBI卷信息加上。mkfs.ubifs工具mkfs.ubifs命令用于制作ubifs文件系统,命令示例如下:mkfs.ubifs -x lzo -m 2KiB -e 124KiB -c 360 -o ./tmp_ubifs.img -d
进程proc文件介绍 进程proc文件介绍proc/${pid}/下是每个进程的proc信息,/proc/self比较特殊,哪个进程打开,对应链接到哪个进程。[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-4q6coJfs-1645932312850)(E:\csdn_demo\进程proc文件系统介绍\进程proc文件.PNG)]内存相关:status: 进程使用虚拟内存和物理内存(RSS)信息statm:maps: 段内核映射VMA以及加载动态库信息;(映射分为文件映射和
内核tty框架_串口_tty_shell的关系 串口驱动已s3c24xx为例,串口驱动主要提供ops,数据结构如下:在driver/tty/serial/samsung.c以三星s3cttypty虚拟tty。shellcmdlineconsole=ttySAC0;tty和串口驱动的绑定。串口驱动会注册tty设备?tty设备名,是串口驱动uart_driver中定义,uart_driver的dev_name中定义。nr值为后续的索引。如:如console=ttySAC0,CONFIG_SERIAL_SAMSUNG_UART
linux内核poll函数学习使用源码mark 记录linux poll机制源码记录,基于linux2.4内核,在内核poll函数中使用poll_wait等待完成变量完成,然后在中断中唤醒完成变量。#include <linux/errno.h>#include <linux/fs.h>#include <linux/init.h>#include <linux/kernel.h>#include <linux/module.h>#include <linux/modulep
python制作epub文件代码 python制作epub文件代码,已封装成类,可以直接使用。# encoding:utf-8# !/usr/bin/python3import zipfileimport os.pathcontainer_template = '''<?xml version="1.0" encoding="utf-8" standalone="no"?> <container version="1.0" xmlns="urn:oasis:names:tc:opendocument:
linux网桥实现代码走读 拓扑vlan_dev --> br-lan --> IP层 (br本身也会有一个fdb条目)网桥创建/添加节点模块初始化static int __init br_init(void){ int err; /*注册STP协议*/ err = stp_proto_register(&br_stp_proto); /*分配fdb的slab: "bridge_fdb_cache", 变量br_fdb_cache*/ err = br_fdb_init(); /*命名空间
前缀树学习和IP路由查找 概要前缀树,又叫字典树,trie树。是一种多叉树。用途单词补全/预测拼写检查9建输入IP路由查找(最长前缀匹配)数组中两个树最大异或值特点根节点是空字符每个节点所有子节点都不同根到叶子,路径上所有字符连接即使该节点对应的字符串[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-66WdAdSm-1627787560898)(E:\csdn_demo\算法\前缀树\前缀树图示.png)]存储数组形式用空间换时间,每个节点使用数组保存,
linux系统调用_arm实现深入剖析(上下文保存、参数传递) 前言这里我们不再赘述系统调用的基本原理以及系统调用产生时的函数调用以及系统调用表,直接看arm中的软中断产生及返回时如何保存寄存器上下文、如何陷入内核再返回、如何传参,模式切换做了哪些处理。这里mark一下: EABI和OABI系统调用实现的方式有所不同。陷入内核不同于x86的int 80中断,arm中使用软中断指令swi实现系统调用,直接看swi的处理向量vector_swi:/*=========================================================
golang微信小程序爬虫教程offer秀 背景周末帮女友手查的各大厂薪资情况,忙活了一个下午,真的是好无聊啊,所以决定写一个爬虫程序,自动爬取。图片offershow界面,以下采用秀代替offer秀因为本人本地开发环境是golang,所以还是采用golang,需求目标是爬取各大厂的薪资情况生成excel文档,用户可以输入筛选条件,如公司、学校、学历等信息,然后只输出筛选后的数据。抓包分析爬虫最重要的一步,抓包分析http请求包括头和相应报文内容,因为我们爬虫时就是需要构造http请求报文和解析响应报文。其次爬微信小程序和爬web网页没有
socket源IP为INADDR_ANY,linux内核何时选择IP 1.通过bind看到原地址保存在inet_addr中2.tcp中connect操作,会设置通过ip_route_connect查路由操作选择srcip;3.udp没有绑定操作,一个socket可以给多个目的发包,不同目的使用的源ip也不一样
01背包问题通俗讲解 问题知道每个物体重量和价值,给你一个背包,计算所能装走物体的最大价值。例如:背包容量:8kg;物体重量编号重量/kg价值023134245356为什么叫01背包问题答:因为每个物体都只有两种选择,装或者不装,称这种每个物体只有两种选择的问题称为01背包问题。解题思路每个物体只有两种选择,即装与不装背包的最大容量为,某个物体装和不装的这种情况中的所得容量最大值。装:总价值增加v,背包容量减少w;(假设该物体重w,价值v
linux软中断和系统调用深入研究 arm软中断模式arm7种模式有中断模式,但是并没有软中断模式。那么arm的软中断是什么呢?arm的软中断是arm从用户模式切换到特权模式,也就是linux中从用户态切换到内核态的过程。swi命令触发软中断linux系统中,swi异常向量代码:linux系统调用x86 架构是硬中断int 80,中断号为80来实现系统调用的;arm架构是使用swi命令,使arm切换为软中断模式,执行swi异常向量表中的异常向量。软中断的异常向量arm中异常象量表:异常类型偏移地址(低)偏移
verilog 图像处理篇: 1.单通道提取 从camera出的像素格式为bayer格式,单通道提取,生成灰度图。GRBG4个通道都用某一通道的数据填充。算法实现,使用双端ram来实现该算法。由于bayer阵列,一个点的像素信息,在bayer阵列中占据两行。算法思路取一大小为2行阵列的dpram;每次写入2行数据,而读取时,只选则其中一行读取。且一行中的两个通道都读取同一地址的数据。代码实现//file name: gray.v//author: shugen.yin//date: 2017.10.18//func
golang学习笔记 io.reader 提供了Reader方法的都是readerio.reader只是interface,如File类就是一个readertype定义类,具体类的方法不用在类中声明方法的指针传递,是修改内部属性用,如果是值传递则不会修改对象内部属性;其次指针传递减少copyduck typing,没有继承的概念golang 下载包命令go get github.com/chai2010/webp 与全局go path有关testbench设置文件名:XXX_test...
转载:linux 网络相关sysctl变量详解 Linux /proc/sys/net/ipv4/* 变量TCP变量:somaxconn - INTEGERlisten()的backlog参数的上限,在用户态为SOMAXCONN。默认是128。也可参考TCP socket调优的tcp_max_syn_backlog参数。tcp_abort_on_overflow - BOOLEAN如果监听服务太慢以致于不能接受新的连接了,就重置他们。默认值是FALSE。这意味着如果是因为一个burst而发生的溢出,连接可以恢复。只有在你非常确定的监听服务端接受