JetsonNano Multimedia API工程搭建及编译
JetsonNano Multimedia API工程搭建及编译
官方文档:
Jetson Linux Multimedia API Reference
Jetson Linux API Reference: Sample Applications
jetson Nano上Multimedia API位于/usr/src/jetson_multimedia_api处
编译libagrus
123456789101112cd code # 切换到自己的工作目录sudo cp -r /usr/src/jetson_multimedia_api/argus/samples/* ./argus_samplessudo chown -R jetson:jetson ./argus_samples# 安装依赖sudo apt install cmake build-essential pkg-config libx11-dev libgtk-3-dev libexpat1-dev libjpeg-dev libgstreamer1.0-dev# 需要提前编译 utils 组件cd ./ar ...
基于STM32L476的IAP升级
RT1061在线擦除外部QSPI Flash
转载于i.MXRT1050在线擦写QSPI Flash作数据备份
之前提到RT1050在外部QSPI Flash启动并且Code在QSPI Flash执行是目前来讲比较常用的做法,那进而有用户会提出一种需求,很多应用都会有用到一些常数参数的存储(比如字库,数学上的三角函数查找表等等),以及重要数据的备份与实时记录或者整个应用firmware的在线升级,我们自然会想到外部那么大空间的QSPI Flash这下可以好好利用一番了,毕竟只是保存应用代码岂不是大大的浪费。所以下面就简单说明下实现RT1050在QSPI Flash XIP的同时还可以在线擦写QSPI Flash所需要注意的几点,并随本笔记附上测试代码供参考,实际上大家看了代码就弄明白怎么操作了,不过有以下几个方面我必须提出来,提醒大家需要重点注意的:
(1)我们的代码以XIP的方式在QSPI Flash上执行的同时还要能擦写自己,首先想到的就是冲突,QSPI Flash只接了一块(RT1050可以接两块独立的QSPI Flash,这种情况不提)而且QSPI Flash又不是双端口的 ...
JetsonNano摄像头驱动开发指南
JetsonNano摄像头驱动开发指南
参考手册:NVIDIA Jetson Linux Developer Guide(下文中所指的参考手册均是指该手册)
Jetson资料下载中心:Jetson Download Center | NVIDIA Developer
Jetson Nano 信息:
Linux jetson-desktop 4.9.253-tegra
L4T 32.7.1
platform代码:
t234:Jetson AGX Orin
t194:Jetson Xavier NX 系列、Jetson AGX Xavier 系列
t210:jetson nano、jetson tx1
内核定制化
下载编译内核
从Jetson Linux | NVIDIA Developer处下载最新的(或者自己选L4T版本号)内核源码L4T Driver Package (BSP) Sources
注意:
目前(2022/6/4)L4T 34.1之后,暂时只支持 Jetson AGX 系列和 Jetson Xavier 系列,其余暂不支持
下载的是源码包(L4T Driv ...
JetsonTX2避坑指南
JetsonTX2避坑指南
基本
调整模式
NVIDIA的新的命令工具Nvpmodel,提供了5种模式,供使用者调整CPU与GPU的运行状态。
模式
模式名
Denver 2
频率
ARM A57
Frequency
GPU 频率
0
Max-N
2
2.0 GHz
4
2.0 GHz
1.30 Ghz
1
Max-Q
0
4
1.2 Ghz
0.85 Ghz
2
Max-P Core-All
2
1.4 GHz
4
1.4 GHz
1.12 Ghz
3
Max-P ARM
0
4
2.0 GHz
1.12 Ghz
4
Max-P Denver
2
2.0 GHz
0
1.12 Ghz
对应命令:
123456# 查询所有模式sudo nvpmodel -p --verbose# 查询当前模式sudo nvpmodel -q –verbose# 切换当前模式(例如切换至模式0)sudo nvpmodel -m 0
可以进入桌面通过UI进行切换
开启风扇
1sudo sh -c "echo 150 > /sys/devices ...
python迭代器与生成器
python迭代器与生成器
本文转载于Python迭代器,生成器–精华中的精华 - Winter_Ding
迭代器
迭代器是访问集合元素的一种方式。迭代器对象从集合的第一个元素开始访问,直到所有的元素被访问完结束。迭代器只能往前不会后退,不过这也没什么,因为人们很少在迭代途中往后退。另外,迭代器的一大优点是不要求事先准备好整个迭代过程中所有的元素。迭代器仅仅在迭代到某个元素时才计算该元素,而在这之前或之后,元素可以不存在或者被销毁。这个特点使得它特别适合用于遍历一些巨大的或是无限的集合,比如几个G的文件。
特点:
访问者不需要关心迭代器内部的结构,仅需通过next()方法或不断去取下一个内容
不能随机访问集合中的某个值,只能从头到尾依次访问
访问到一半时不能往回退
便于循环比较大的数据集合,节省内存
不能复制一个迭代器。如果要再次(或者同时)迭代同一个对象,只能去创建另一个迭代器对象。enumerate()的返回值就是一个迭代器,我们以enumerate为例:
12345a = enumerate(['a','b'])fo ...
Arch Linux安装指南
Arch Linux安装指南
参考文档:
官网wiki:Installation guide
具体安装环境:
intel i5-4210M
nvidia 940M
8G+4G ddr4
240G 东芝ssd
一、基本安装
参考链接:
Solid state drive (简体中文)
分区4K对齐问题在 Linux 中需要考虑吗? - Ubuntu中文论坛
Ubuntu系统SSD硬盘优化全记录 - Ubuntu中文论坛
去官网Arch Linux - Downloads找到国内镜像源,下载当前版本的Arch
通过对应的软件(如Rufus - 轻松创建USB启动盘)烧录到U盘,并通过修改启动项从U盘启动即可
修改启动方式为UEFI
修改安全启动(Secure Boot)为False,安装过程中不支持该特性,安装完毕后可以通过配置Arch修改回来
此时进入系统后即为上述安装文档中的Live环境
1.1 Live环境
123456789101112131415161718192021# 验证是否为UEFI启动ls /sys/firmware/efi/efivars# 查看网 ...
Arduino中添加自定义板卡
Arduino中添加自定义板卡
参考链接:
Platform specification - Arduino CLI
Adding custom (Zero based) boards to the Arduino IDE - Hardware / Arduino Zero - Arduino Forum
Arduino IDE: Creating Custom Boards : 10 Steps - Instructables
Home · stm32duino/wiki Wiki (github.com)
参考工程:
sipeed/Maixduino: Arduino port on Maix board ( k210 )
robotics-masters/mm1-hat-arduino: Repository for storing Arduino related files and custom board definition.
espressif/arduino-esp32: Arduino core for the ESP32
stm32duino/Arduino ...
ESP32环境配置
ESP32环境配置
参考链接:
快速入门 - ESP32 - — ESP-IDF 编程指南
本人环境:
ubuntu 20.04
python3
IDF 4.2
安装准备
按照官方脚本安装对应工具:
参考链接:Linux 平台工具链的标准设置 - ESP32 - — ESP-IDF 编程指南 v4.3.1 文档
1sudo apt-get install git wget flex bison gperf python3 python3-pip python3-setuptools cmake ninja-build ccache libffi-dev libssl-dev dfu-util libusb-1.0-0
仅适用于目前IDF版本,如果IDF更新,请按照官方文档安装对应工具
获取IDF
从下面的GitHub链接获取对应版本的IDF
espressif/esp-idf: Espressif IoT Development Framework. Official development framework for ESP32.
安装
官方步骤
直接cd到刚 ...
全志F1C200S
零、预备知识
TINY200官网:MangoPi | mangopi_r
DFR0780 MangoPi R3 产品资料 使用教程
工具链
1sudo apt install arm-linux-gnueabihf-gcc
烧录方法
工具安装
sunxi-tools:一款全志官方出品的调试SOC命令行工具集合,支持sun4i、sun5i…等处理器。这里下载固件需要用到这个工具
12345678# 安装依赖sudo apt-get install pkg-config pkgconf zlib1g-dev libusb-1.0-0-dev# f1c100s-spiflash 分支git clone -b f1c100s-spiflash https://github.com/Icenowy/sunxi-tools.git# 进入源码文件夹cd sunxi-tools# 编译和安装make && sudo make install
注意:用官方原版的sunxi-tools或者ubuntu仓库中的sunxi-tools,都是不支持F1C200S的
DKTool F1C10 ...
现代操作系统总结
现代操作系统总结
进程与线程
进程间通信
为了避免竞争,一般需要满足以下4个条件:
任何两个进程不能同时处于其临界区
不应该对CPU的速度和数量做任何假设
临界区外运行的进程不得阻塞其他进程
不得使进程无限期等待进入临界区
屏蔽中断对操作系统来说是一项很有用的技术,但是对于用户进程则不是一种合适的通用互斥机制(其他CPU核仍然可以访问)
互斥量与信号量区别:
互斥量用于线程的互斥,信号量用于线程的同步。
这是互斥量和信号量的根本区别,也就是互斥和同步之间的区别。
互斥:是指某一资源同时只允许一个访问者对其进行访问,具有唯一性和排它性。但互斥无法限制访问者对资源的访问顺序,即访问是无序的。
同步:是指在互斥的基础上(大多数情况),通过其它机制实现访问者对资源的有序访问。在大多数情况下,同步已经实现了互斥,特别是所有写入资源的情况必定是互斥的。少数情况是指可以允许多个访问者同时访问资源
note:信号量可以用来实现互斥量的功能
互斥量值只能为0/1,信号量值可以为非负整数。
也就是说,一个互斥量只能用于一个资源的互斥访问,它不能实现多个资源的多线程互斥问题。信号量可以实现多 ...