龙芯
文章平均质量分 54
小菜刀_
这个作者很懒,什么都没留下…
展开
-
在x86平台体验龙芯LoongArch--使用Qemu-7.2安装LoongArch版的ArchLinux
在x86机器上使用源码编译qemu 7.2 ,并安装LoongArch版的ArchLinux原创 2023-03-18 08:28:18 · 5248 阅读 · 1 评论 -
# LoongArch 内存模型与栅障
存储访问类型与访存虚拟地址绑定,通过页表项中的MAT(Memory Access Type)域决定。MAT域的值域存储访问类型的对应关系是:0–强序非缓存,1–一致可缓存,2–弱序非缓存,3–一保留。存储访问类型的设置过程对于应用软件是透明的。,所访问的对象既可以是也可以是。通常采用这种访问类型访问内存以获得高性能。。,即所有访问严格按照程序中的次序执行且当前访存操作彻底完成前不能开始执行下一个访存操作;而。原创 2022-11-30 10:01:34 · 1182 阅读 · 1 评论 -
龙芯(LoongArch)架构获取CPUID
根据龙芯架构手册可知,通过 cpucfg 指令可以读取一系列配置寄存器,0 号配置寄存器存放的是CPU 标识ID。 所以只要用cpucfg 读取 0号配置寄存器即可。代码如下:#include <stdio.h>#include <stdint.h>#define LOONGARCH_CPUCFG0 0x0uint32_t read_cpucfg(uint32_t reg){ uint32_t val = 0; asm volatile("cpucfg %0, %原创 2022-02-23 10:45:26 · 1194 阅读 · 0 评论 -
Loongarch 软件移植
AutoTools 添加Loongarch 支持为了简化可移植构建的难度,早期有一套AutoTools的工具帮助程序员构建软件。c/c++开源项目大多由Autotools 工具管理,源码编译常见三步曲。./configuremake make install在Loongarch 下编译常见的问题如下:./configureconfigure: error: cannot guess build type; you must specify one在 ./configur原创 2021-06-27 18:37:53 · 4079 阅读 · 0 评论 -
u-boot-2019.10 启动流程分析
平台:ls2k coreu-boot 中的README 有整个启动流程的说明arch/mips/cpu/u-boot.lds 中指定了入口为 _startarch/mips/cpu/start.S ENTRY(_start) 开始 /* U-Boot entry point */ b reset mtc0 zero, CP0_COUNT # clear cp0 count for most accurate boot timing#if defined(CONFIG_MIPS原创 2021-02-02 20:29:21 · 553 阅读 · 0 评论 -
将rtthread-4.0.3 移植到LS1B的踩坑记录
从github 下了rt-thread 的最新版本rt-thread 4.0.3,发现其中对LS1B的支持太匮乏,并且在板子无法正常运行。好在对LS1C的支持还算完善,遂参考LS1C采用新框架移植串口驱动到LS1B上,在移植的过程中遇到了一些坑,现踩坑过程记录如下。移植完串口驱动后一运行就送大礼了,报错误信息如下:initialize rti_board_start:0 donecurrent sr: 0x1000fc00 \ | /- RT - Thread Operating Sys原创 2021-02-02 16:56:55 · 689 阅读 · 1 评论 -
交叉编译龙芯平台的uboot 和 kernel
u-boot 2013 export ARCH=mips export CROSS_COMPILE=mips64el-linux- 如果想指定编译目录: export BUILD_DIR=/tmp/build 或 make -O=/tmp/build make ls2k_pai_config makeu-boot 2019 (gcc-9.1 mips64el) export ARCH=mips export CROSS_COMPILE=mips64el-linux- c原创 2020-12-09 10:36:30 · 985 阅读 · 0 评论 -
uos20(龙芯平台)上编译及更换最新kernl 5.9及kernel 4.19
OS:UOS 20下载龙芯提供的4.19 源码源码下载地址:http://ftp.loongnix.org/kernel/linux-4.19.90/Linux-4.19.90-5.tar.gz解压编译$ tar xf Linux-4.19.90-5.tar.gz$ cd Linux-4.19.90-5$ make loongson3_defconfig$ make -j4$ make install INSTALL_PATH=./_install$ make modules_inst原创 2020-12-08 14:37:43 · 3870 阅读 · 9 评论 -
linux 4.19在龙芯平台上编译出错解决方法
OS: Loongnix server 1.7工具链为:系统自带的gcc-4.8.5 和 gcc-7.3平台:3A3000/3A4000源码:kernel: 4.19编译步骤···make loongson3_defconfigmake -j4···出错信息:HOSTCC arch/mips/boot/compressed/calc_vmlinuz_load_addr arch/mips/boot/compressed/head.S: Assembler messages: arch/m原创 2020-12-04 11:47:20 · 860 阅读 · 0 评论 -
u-boot-2019 引导菜单分析
configs/ls2k_core.h 中定义了默认的菜单项及其他默认变量#define CONFIG_EXTRA_ENV_SETTINGS \ CONSOLE_STDOUT_SETTINGS \ "loadaddr=" __stringify(CONFIG_SYS_LOAD_ADDR) "\0" \ "rd_start=0x86000000\0" \ "rd_siz原创 2020-12-03 16:40:43 · 575 阅读 · 0 评论 -
u-boot-2019 修改内核引导参数
$ make menuconfig[*] Enable boot arguments (console=ttyS0,115200 root=ubi0:rootfs ubi.mtd=root,2048 mtdparts=" CONFIG_MTDPARTS_DEFAULT " noinitrd init=/linuxrc rootfstype=ubifs rw video=ls1xfb:ls1xfb:1920x1080-16@60)原创 2020-11-27 09:32:00 · 267 阅读 · 0 评论 -
u-boot-2019 修改nand分区大小
$ make menuconfig //修改Default MTD partition scheme 里面的内容Command line interface > Filesystem commands and support > [*] MTD partition support原创 2020-11-27 09:26:27 · 814 阅读 · 0 评论 -
程序调试之CPU 占用率高
cpu: ls2k基本思路:找到占用cpu 使用率最高的线程,之后查看此线程执行的函数栈,找到相应的函数。查看线程的cpu占用率可以用top , top -Hp 或者是 ps 命令。之后用gdb attach,查看线程信息,根据线程号即tid找到相应的线程并切换到此线程,之后查看此时的函数栈。详细过程如下:通过ps 或 top 找到线程号通过`ps` 命令打印出pid, tid, cpu 占用率,cmd 等信息[sancog@localhost build-qt-client-unknown-D原创 2020-10-29 16:27:14 · 1566 阅读 · 0 评论 -
PMON 启动流程分析
主要启动流程(以ls2k 为例)pmon-loongson3\Targets\LS2K\ls2k\start.Sjr initmipspmon-loongson3\zloader\initmips.c realinitmips 说明initmips.c 是编译之后生成的jalr initmips的地址pmon-loongson3\Targets\LS2K\ls2k\tgt_machdep.c initmipstgt_fpuenabletgt_cpufreqCPU_ConfigCac原创 2020-10-16 16:48:51 · 1874 阅读 · 2 评论 -
pmon 引导顺序
读U盘中的boot.cfg 或 boot/boot.cfg文件,支持的文件系统格式为ext2, fat, iso9660。读CD中的boot.cfg 或 boot/boot.cfg文件读bootdev 环境变量下的boot.cfg 或 boot/boot.cfg文件。bootdev默认值为/dev/fs/ext2@wd0即文件系统格式为ext2的第一块硬盘读变量al1,al1的默认值为/dev/fs/ext2@wd0/boot/vmlinux,即从第一块盘硬盘引导内核。同时append的默认值为co.原创 2020-10-16 16:45:29 · 1271 阅读 · 0 评论 -
pmon构建过程分析
以编译ls2k pai 为例,编译步骤如下$ cd zloader.ls2k$ make cfg // $ make tgt=rom // 生成gzrom.bin$ make dtb // 生成gzrom-dtb.bin ,即包含设备树构建过程如下:通过脚本getname获取当前的目录名,以确定具体的板卡,设置相应的变量处理libc, libm, libz 的Makefile创建文件夹Targets/LS2K/compile进入Targets/LS2K/conf 目录,原创 2020-10-07 17:18:15 · 1635 阅读 · 0 评论 -
PMON 添加自定义命令
添加自定义命令有两种方式,一是适用于了指定板卡,一是适用于所有板卡。1.添加特定板卡的命令以2K 为例,主要涉及以下3个文件:Targets/LS2K/conf/files.LS2K //指定要编译的文件路径及模块名字 file Targets/LS2K/dev/cmd_info_display.c cmd_info_displayTargets/LS2K/conf/ls2k.pai //是否需要将命令编译到固件中 select cmd原创 2020-10-05 08:05:54 · 427 阅读 · 0 评论 -
ejtag使用之调试pmon(单步及断点)
pmon 反汇编(objdump -S gzrom > grom.S)后的代码片断节选gzrom: file format elf32-tradlittlemipsDisassembly of section .text:8f900000 <_ftext>:8f900000: 04110e2b bal 8f9038b0 <ls2k_version>8f900004: 00000000 nop8f900008: 14400019 bnez v0,8原创 2020-10-05 07:54:50 · 744 阅读 · 0 评论 -
ejtag 调试pmon 卡死
将ejtag调试器连到板子上,确定ejtag 连接正常之后重启板子# ./ejtag_debug_usb -t// 判断ejtag 连接是否正常cpu0 -jtagregs d8 1 100000001: 000000005a5a5a5a ZZZZ....//在pmon 卡死的时候,获取各寄存器的值cpu0 -cpus#cpus[00] 0xffffffff8f06ce40 [00] 0xffffffff8f013730 cpu0 -set#set原创 2020-09-28 20:49:20 · 546 阅读 · 0 评论 -
程序调试之非法指令(龙芯平台)
更换内核后运行 qrcreator 报非法指令之调试过程背景:在中标5.0系统上qtcreator 运行正常,由于中标5.0 自带内核为3.10比较旧,故采用自己移植的4.19。结果换了内核之后qtcreator 运行报非法指令。主要思路为通过gdb 找出产生非法指令的语句。具体过程如下:[sancog@localhost ~]$ qtcreator 非法指令[sancog@localhost ~]$ whereis qtcreatorqtcreator: /usr/bin/qtcreato原创 2020-09-25 19:51:00 · 1527 阅读 · 2 评论 -
在x86平台调试龙芯平台(mips64el)程序
os:ubuntu 18.04 x64使用qemu 作为模拟器,gdb 为作为调试器。安装相关软件sudo apt install gdb-multiarch qemu qemu-user gcc-multilib gcc-multilib-mips64-linux-gnuabi64测试代码$ cat code.c #include<stdio.h>int main(){ printf("Hello world!\n"); return 0;}原创 2020-09-25 15:19:42 · 1802 阅读 · 0 评论 -
龙芯平台Qt视频播放程序之性能分析
系统:UOS 20 龙芯版(MIPS64EL)程序的主要功能为以Qt + ffmpeg的形式实现播放rtsp网络实时流,并同时存储视频流(H264裸流)安装性能分析工具perfapt install linux-perf安装相关调试包(带符号信息)apt install ffmpeg-dbgsymapt install libavcodec58-dbgsym libswscale5-dbgsymapt install qtbase5-dev-tools-dbgsym运行程序,通过 top原创 2020-09-25 11:00:30 · 440 阅读 · 0 评论 -
龙芯平台Devops 搭建教程
项目管理禅道(zentao)https://www.jianshu.com/p/1fcbad8f13a2代码管理git服务器(gogs)https://www.jianshu.com/p/44dfc3de6ee4代码集成jinkenshttps://www.jianshu.com/p/b19432d6445ebug 管理mantis原创 2020-09-14 10:08:15 · 326 阅读 · 0 评论 -
使用qemu+gdb调试rtthread(Loongson2K)
使用qemu+gdb调试rtthread编译qemu官方版本暂时只支持ls2e,ls2f.ls3a, 这里使用龙芯维护的版本$ git clone https://gitee.com/loongsonlab/qemu.git$ cd qemu$ mkdir build$ cd build$ ../configure --target-list=mipsel-softmmu,mips64el-softmmu --disable-werror --prefix=./_install $ make原创 2020-08-19 16:49:46 · 1800 阅读 · 1 评论 -
交叉编译出错之:reloaction truncated to fit : R_MIPS_CALL16
交叉编译工具链:cross-gcc-4.9.3-n64-loongson-rc6.1交叉编译出错的日志:/home/loongson/work/common/3rd/lib//3gpp.o: In function `asn1Init_ngap_GUAMI':/home/loongson/work/common/3rd/src/3gpp.c:1441:(.text+0x536c): relocation truncated to fit: R_MIPS_CALL16 against `asn1Init原创 2020-08-10 14:38:07 · 1906 阅读 · 3 评论 -
如何制作龙芯系统安装U盘
可适用的OS 及下载地址:Loongnixhttp://www.loongnix.org/index.php/Loongnixhttp://ftp.loongnix.org/os/loongnix/1.0/liveinst/Loongnix server http://ftp.loongnix.org/os/loongnix-server/1.7/isos/mips64el/UOS 20 desktop uos官网Kylin-V10 desktop kylin...原创 2020-06-30 10:25:26 · 7408 阅读 · 0 评论 -
龙芯平台固件(BIOS)简介
原创 2020-06-30 09:28:08 · 2085 阅读 · 0 评论 -
uos20-龙芯版(MIPS64EL) 安装PySide2
$ pip3 install PySide2Defaulting to user installation because normal site-packages is not writeableERROR: Could not find a version that satisfies the requirement PySide2 (from versions: none)ERROR: No matching distribution found for PySide2下载源码:$ wge原创 2020-06-18 19:08:49 · 1975 阅读 · 1 评论 -
在UOS20-龙芯(MIPS64EL)上安装 opencv-python
使用pip 安装$ pip install opencv-pythonDefaulting to user installation because normal site-packages is not writeableERROR: Could not find a version that satisfies the requirement opencv-python (from versions: none)ERROR: No matching distribution found fo.原创 2020-06-18 10:00:58 · 2068 阅读 · 1 评论 -
移植python包到龙芯(MIPS64EL)平台
由于有不少python 包是用c写的这样在不同的CPU架构上使用时需要重新编译。目前有两种方法来处理这个问题。使用pip在线安装,利用pip在线安装时会自动下载相应的源码包并编译的功能找到源码然后手动编译,一般在https://pypi.org 可以到源码使用这两种方法时都得安装编译环境及编译此包所需的依赖,不然就会出现编译失败或安装失败的提示。用 pip install 安装时,如果找不到相应的.whl 包,则自动下载源码之后进行编译。编译后的包在~/.cache/pip/wheels目录下。原创 2020-06-16 18:31:29 · 3127 阅读 · 0 评论 -
如何制作debian(mips64el) docker镜像并上传到docker官方仓库
系统环境:龙芯3A3000+Loongnix1.0制作debian最小系统# debootstrap --arch mips64el buster debian10_mips64el http://mirrors.ustc.edu.cn/debian导入docker### 此处用loongsongd 是为了上传到hub.docker.com。 loongsongd 是在hub.docker 上注册的用户名 # tar -C debian10_mips64el/ -c . | docke原创 2020-06-12 10:21:21 · 1935 阅读 · 0 评论 -
龙芯平台(mips64)ffmpeg应用解码之性能分析
测试代码(demo.c):#include <stdbool.h>#include <stdio.h>#include <stdlib.h>#include <string.h>#if HAVE_UNISTD_H#include <unistd.h>#endif#if HAVE_IO_H#include <io.h>#endif#include <sys/types.h>#include <s原创 2020-05-29 14:03:46 · 2104 阅读 · 1 评论 -
在搭载nk5.0 的2K工控板上添加Lcd输出支持
经过验证DVO0和DVO1都是能正常输出的(在2K开发机上验证),只是目前接的LCD 屏只支持1280x800 的分辨率。而当前系统中可选的分辨率只有1024x768和800x600两种。所以首先想到的就是修改 xorg.conf 来添加分辨支持。通过在xorg.conf 中设置modeline 和 modes 这两个参数来实现。xorg.conf 默认在 /etc/X11 目录下。但在/etc/X11 目录下没发现xorg.conf,只好自已动手丰衣足食了。Xorg 支持根据当前环境生成xorg.con原创 2020-05-28 20:45:48 · 316 阅读 · 0 评论 -
龙芯(MIPS64)平台线程栈设置出错之调试过程
###线程测试代码#include <stdio.h>#include <unistd.h>#include <string.h>#include <stdlib.h>#include <pthread.h>void *thd_fn(void *args){ int n = *((int *)args); printf("this is thread:%d\n", n); while(1) { printf("this原创 2020-05-28 20:43:14 · 706 阅读 · 0 评论 -
国产操作系统(Linux)技术流派
图1 Linux发行版如上图所示目前主流的Linux 发行版大体可以分为两类:一类是简称为RPM系,另一类是简称为DEB系。基中RPM系是以Redhat 为代表,其主导发行的包括:服务器商业版:Redhat Enterprise Linux服务器社区版:Centos社区版:FedoraCentos 以它是来自于Redhat Enterprise Linux依照开放源代码规定释出的源代码所编译而成。Fedora 则是Redhat Enterprise Linux是...原创 2020-05-11 15:07:24 · 6573 阅读 · 0 评论 -
重置linux 系统密码(龙芯平台亦适用)
在电脑上电后出现grub menu list 时选择要启动的选项按 e 进入编辑模式找到linux 关键字,在其后添加内核参数 rd.break按F10 启动系统进入紧急模式执行 mount -o remount,rw /sysroot执行 chroot /sysroot进入系统后之后执行设置用户密码或添加用户等操作。参考链接:https://www.rootusers.com/how-to-reset-root-user-password-in-centos-rhel-7/...原创 2020-05-09 09:26:41 · 807 阅读 · 0 评论 -
3A4000 实现的指令集功能配置信息列表
3A4000 实现的指令集功能配置信息列表 PRId |CP0.PRId FP |等价于CP0.Config1.FP[bit0]FPRev |龙芯FPU浮点运算所遵循规范的版本号MMI |为1表示实现了龙芯多媒体指令扩展LSX1 |为1表示支持龙芯SIMD扩展ILSX2 |为1表示支持龙芯SIMD扩展IILASX |为1表示支持龙芯高级SIMD扩展C...原创 2019-12-25 15:31:35 · 1115 阅读 · 0 评论 -
中标麒麟桌面操作系统龙芯版系统安装盘(U盘)制作方法
bios: 昆仑固件或uefi或 PMON中标系统下载地址见 :https://blog.csdn.net/mxcai2005/article/details/1036598541. 需要准备一个大小超过4.5G的U盘,格式化为ext3格式2. 下载安装光盘镜像xxx.iso,将镜像制作为usb cd操作命令:此处假设U盘的设备节点为 /dev/sdb (可通过fdisk...原创 2019-12-25 15:00:02 · 10102 阅读 · 3 评论 -
在x86平台制作龙芯版debian 10系统(mips64el)
OS:ubuntu 18.04使用debootstrap制作根文件系统会分成两个阶段。第一阶段是,使用debootstrap命令来下载软件包。 第二阶段是安装软件包。安装debootstap 等相关工具$ sudo apt install binfmt-support qemu qemu-user-static debootstrap使用debootstrap 下载软件包$ m...原创 2019-12-23 11:56:12 · 2152 阅读 · 0 评论 -
在loongnix 上编译内核模块及内核
在loongnix 上编译内核模块及内核$ cd /lib/modules/`uname -r`$ ls -l总用量 1812lrwxrwxrwx 1 root root 53 9月 27 12:48 build -> /usr/src/kernels/3.10.84-22.fc21.loongson.10.mips64eldrwxr-xr-x 5 root r...原创 2019-12-23 09:45:28 · 1559 阅读 · 0 评论