x86环境模拟arm Linux
众所周知,cpu架构有x86和arm,由于公司在搞国产化arm飞腾芯片,组内也没有申请arm的板子,每次需要arm环境都要向测试同事申请,于是乎查了一下能否在windows x86上来模拟一个arm的linux环境,还真可以,记录一下配置过程 安装qemu参考 《windows下qemu的下载及安装》 略 下载arm镜像镜像自行选择发行版,我这里选择的是 debian-12.2.0-arm64-netinst.iso 链接:https://cdimage.debian.org/debian-cd/current/arm64/iso-cd/ 下载虚拟化的ARM64 BIOS链接:https://releases.linaro.org/components/kernel/uefi-linaro/16.02/release/qemu64/ 安装将上面下载的两个文件放在一个文件夹里 在当前文件夹打开cmd,执行命令 1qemu-img create -f qcow2 debian12.qcow2 64G 执行完成后会生成 debian12.qcow2...
Doxygen生成项目文档
安装doxygen和GraphViz1apt install doxygen graphviz 使用方法生成配置文件1doxygen -g 编辑配置文件1vim Doxyfile 123456789101112OUTPUT_LANGUAGE = ChineseEXTRACT_ALL = YESEXTRACT_PRIVATE = YESEXTRACT_PACKAGE = YESEXTRACT_STATIC = YESEXTRACT_LOCAL_METHODS = YESINPUT =source \ includeRECURSIVE = YESHAVE_DOT = YESCALL_GRAPH = YESCALLER_GRAPH = YES 我的完整配置 生成1doxygen
RSIC-V指令集
RSIC-V 流水线pc(program counter 存储当前指令)—> instuction RAM(指令内存) —> reg0~31(32个寄存器) —> ALU(逻辑数学运算单元) —> data RAM(数据内存) 上述数据流转流程被称为 instuction pipeline Instruction setRSIC-V 不管是32位cpu还是64位cpu,指令长度固定为32位。 opcode: 区分6种不同类型的指令 rd: destination reg目标寄存器,711共5bit,可以表示reg031,S-type和SB-type为操作型指令,不需要目标寄存器 rs1: source reg 源寄存器1,1519共5bit,可以表示reg031,存储源操作数 rs2: source reg 源寄存器2,2024共5bit,可以表示reg031,存储源操作数 funct3: 3bit操作码 funct7: 7bit操作码 imm: 立即数 常用指令 add x1, x0, 0 高级语言释义:x1 = x0 + 0,...
G711编解码--C语言实现
前言G.711是一种窄带音频编解码器,最初设计用于电话,可提供 64 kbit/s 的长途质量音频。它是音频编码的ITU-T标准(推荐),名为语音脉冲编码调制 (PCM),于 1972 年发布并使用。 G.711 传递300–3400 Hz频段的音频信号,并以8000 Hz 的速率对其进行采样,该速率的容差为百万分之50 (ppm)。 它使用两种不同的对数压扩算法之一:μ-law(主要在北美和日本使用)和A-law(在北美以外的大多数其他国家/地区使用)。每个压扩样本被量化为 8 位,从而产生 64 kbit/s 的比特率。[1] Wikipedia 压缩原理G711按采样点进行压缩,舍弃低位,高位分段,将16bit的一个采样点数据压缩为8bit,所以压缩比固定为 8/16 = 50%。G.711a对高13位进行压缩,主要运用于欧洲和世界其他地区;G.711u对高14位进行压缩,主要运用于北美和日本 G.711a编码 取符号位并取反得到 $\overline s$ 获取强度位 eee 获取高位样本位 wxyz 组合为...
WSL
安装WSL 是 windows subsystem for linux 的简称,可以理解为运行在windows上的一个虚拟机,微软应用商店安装即可 Make your Current Distro Run Systemd1234curl -L -O "https://raw.githubusercontent.com/nullpo-head/wsl-distrod/main/install.sh"chmod +x install.sh./install.sh install/opt/distrod/bin/distrod enable --start-on-windows-boot 固定IP1234567891011121314@echo onnet stop LxssManagernet start LxssManager wsl -d Ubuntu -u root /opt/distrod/bin/distrod enablewsl -d Ubuntu -u root ip addr del $(ip addr show eth0 ^| grep...
oh-my-zsh
查看当前shell1echo $SHELL 1cat /etc/shells 安装zsh1yum -y install zsh 安装oh-my-zsh1wget https://github.com/robbyrussell/oh-my-zsh/raw/master/tools/install.sh -O - | sh 成功界面12345678910 ____ / /_ ____ ___ __ __ ____ _____/ /_ / __ \/ __ \ / __ `__ \/ / / / /_ / / ___/ __ \ / /_/ / / / / / / / / / / /_/ / / /_(__ ) / / / \____/_/ /_/ /_/ /_/ /_/\__, / /___/____/_/ /_/ /____/ ....is now installed!Please look over the...
git学习笔记
前言Linus牛逼! 配置12git config --global user.name ciikigit config --global user.email ciiki@ciiki.eu.org 使用创建版本库123mkdir learngitcd learngitgit init 添加文件12git add readme.txtgit commit -m "first git commit" git add 表示把文件放入暂存区,可以修改文件后执行多次,git自动合并修改,最后 git commit 将修改提交到本地仓库 查看提交记录123git loggit refloggit log --graph --pretty=oneline --abbrev-commit 版本控制恢复上一版本1git reset --hard HEAD^ 恢复未来版本1git reset --hard 1094a 1094a是 git log 输出的commit id,写前几位就行不用写全,会自动搜索 查看状态1git...
汇编学习4
显存屏幕上的内容=显存中的数据 8086cpu显存地址空间A0000-BFFFF共计128K,其中B8000-BFFFF共32K的空间,是80*25彩色字符模式第0页的显示缓冲区 可以显示25行,每行80个字符,每个字符占两个字节,低位字节为ascii码,高位字节为显示属性(BL-R G B-I-R G B:闪烁-背景-高亮-前景) 12345678910111213141516171819202122232425262728assume cs:codesg,ds:datasgdatasg segment db 'welcome to masm!'datasg endscodesg segmentstart: mov ax,datasg mov ds,ax mov ax,0b800h mov es,ax mov si,0 mov di,160*12+80-16 mov cx,16w: mov al,[si] mov es:[di],al inc di mov al,71h ...
汇编学习3
流程转移与子程序jmp段内转移:只修改ip,例如jmp ax段间转移:修改cs:ip,例如jmp 1000:0(debug使用,源程序不可以使用) jmp 标号 jmp far ptr 标号;段间转移 jmp short 标号;段内短转移 jmp near ptr 标号;段内近转移 jcxz 标号如果cx = 0,跳转到标号处执行 call和retcall 标号;跳转到标号处执行ret;返回调用处 123456789101112131415161718192021assume cs:codedata segment db 'conversation',0;0用来标定字符串的结束data endscode segmentstart: mov ax,data moc ds,ax mov si,0 call capital mov ax,4c00h int 21hcapital:mov cl,[si] mov ch,0 jcxz ok;如果cx...
汇编学习2
用汇编语言编写程序汇编程序–>编译器–>机器码 123mov ax, 4c00Hint 21H 相当于return 0,程序结束,把控制权交还给系统 一个有意义的汇编程序中至少要有一个段—-代码段 段定义段名 segment ----段的开始 ... 段名 ends ----段的结束 end汇编程序结束的标记位置 assume1assume cs:codesg 将段名为codesg的起始地址放入cs代码段寄存器 完整源程序.asm示例123456789101112assume cs:codesgcodesg segment mov ax,0123 mov bx,0456 add ax,bx add ax,ax mov ax,4c00 int 21Hcodesg endsend 编译使用masm编译源码文件 1masm p4-1.asm; 生成p4-1.OBJ 使用link连接OBJ文件 1link p4-1 debug装载程序1debug...