V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX  ›  424778940  ›  全部回复第 4 页 / 共 18 页
回复总数  344
1  2  3  4  5  6  7  8  9  10 ... 18  
169 天前
回复了 tool2dx 创建的主题 程序员 ntfs 恢复软件从原理上就很不好用。
@ambition117 trim 气死 +1 哈哈哈哈哈
也没有哪个文件系统设计是为了方便恢复数据的吧, 真的有需求要么备份要么用 snapshot
169 天前
回复了 usb7 创建的主题 Linux 从汽车 CAN/OBD 接口读取数据,并上传到云端
@usb7

有车场支持, 那也得能拿到协议和动力 can 总线访问, 另外你应该更熟悉 can 本身而不是 odb, 因为动力 can 很多都是自定义帧, 跟 odb 没关系

我很久之前有做过一个这个东西, 就是 odb 实现的, 实时性是很差的, 没有继续做也是因为实时性问题
界面元素/上位机/下位机/硬件均为自制
https://www.youtube.com/watch?v=MfvGJcwQHoQ
169 天前
回复了 usb7 创建的主题 Linux 从汽车 CAN/OBD 接口读取数据,并上传到云端
还有一个题外话, 就是 ODB-II 是一个获取信息很有限的协议, 本身拿到的信息并不多, 而且不是所有车企都完全支持协议全部参数, 有的车连当前是什么档都拿不到的

很多记录仪/诊断器, 甚至是淘宝那种自动关窗器, 都是要拿到车厂给的的资料或者逆向出厂家专有协议, 才能实现相关功能, 因为 ODB 接口里不一定只跑 ODB 协议, 还有厂家自己专有的 CAN 协议, 甚至可能还有第二组 CAN 接口

很多车是有多组 can 总线的, 分为动力/娱乐/其他之类的, ODB 口里很可能是没有动力 CAN 总线的, 要单独找线刺破监控
动力 CAN 上很多信息是直接广播出去的, 比如时速转速油门刹车, 不是 ODB 这种轮询, 因为轮询效率太差了

如果对上述信息都不清楚, 指望 ODB-II 能给你很多功能并且做出这个东西还希望推广, 我只能说祝你商业兴隆
169 天前
回复了 usb7 创建的主题 Linux 从汽车 CAN/OBD 接口读取数据,并上传到云端
@usb7 "我不懂,在 rtos 上和云端交互(例如:Kuksa ),应该不容易?云端肯定自己做不了,要借用现在开源的。"

在 rtos 上和云端交互不容易? 别说 rtos, 你猜米家台灯里用的什么? 树莓派吗?
169 天前
回复了 usb7 创建的主题 Linux 从汽车 CAN/OBD 接口读取数据,并上传到云端
@usb7 "可是为什么国外有基于 ARM Linux 树莓派的 CAN 硬件?"

国外有的东西多了去了 还有人拿 fpga 做键盘呢 但这不代表他就是一个合理的商业化项目 你要说自己 diy 玩 那肯定无所谓你开心就好

这类设备本身就是一个很成熟的市场 别说国外 国内大货车的轨迹记录仪听说过吗 新一点的基本都能在线看到轨迹和行车状况 你猜他们是用树莓派吗?

连仔细调研都没做好就盲目搞产品是初创团队失败的众多坑之一
169 天前
回复了 usb7 创建的主题 Linux 从汽车 CAN/OBD 接口读取数据,并上传到云端
需求我了解确实有一定市场, 但这样实现不知道这有什么意义
iot 设备一般都是低成本为重, 因为要用 python, 非要用 arm+linux 就是脱裤子放屁了
正常实现这个需求, 应该是 can-phy+支持 can 的单片机+rtos+蜂窝数据模块
再不济你一句 c/cpp 不会, 朋友听说过 micropython 吗?
@dzdh 这两个并不冲突啊

不能有用的参数接收方不处理不就完了, 不然调用方还要特地区分每个情况下哪个参数能不能传才是心智负担吧

不想引入太多东西往往意味着要自己写更多的东西重新实现现成的轮子的一部分
@besto 已经 1 年多了, 基本没有扫描的, 这个跟楼上说的也跟你 ip 段有关系
不太理解这个需求, 为什么要求"必须不传"?

不然直接用 protobuf3 不好吗?
5 位端口+1
之前有些乞丐配置 vps 甚至都被他扫死机了, 换了之后就基本没有记录了
172 天前
回复了 zhng920823 创建的主题 C 一个简单实用的 C 工程示例, 附简洁的 Makefile
makefile 早就该被淘汰了, 又是写他都不如写个 shell 脚本方便, 或者说这东西就是个特别一点的 shell 脚本
makefile, 尤其是 autotools 沾边的, 语法奇怪, 文档残废, 每次改点啥都要进去看代码, 因为变量名和选项都没有标准

我现在一律使用 cmake, 虽说也没有特别先进, 有些地方还是有"无法指定这个操作到底 config 还是 build 时候执行"的问题, 但配合任何 shell 脚本基本都能解决 90%以上的场景需求了

楼主你这个 makefile, 用 cmake 应该不到一半的行数就能写完
今天也收到了,
https://w.v1uf.cn/
https://svip.gougouyouxuan.com/index.html

甚至还有去年的新闻
https://finance.sina.cn/2023-12-05/detail-imzwymww0164560.d.html

对外反诈重拳出击 对内不闻不问
处理了一下 env

```shell
#!/bin/bash

# path setup
export PATH_SCRIPTS=$(dirname -- "$( readlink -f -- "$0"; )";)
export PATH_xxx_BSP_ROOT=$(readlink -f -- "$PATH_SCRIPTS/..";)
export PATH_RK_SDK=$PATH_xxx_BSP_ROOT/rk_sdk
export PATH_BOOTLOADER=$PATH_RK_SDK/u-boot
export PATH_KERNEL=$PATH_RK_SDK/kernel
export PATH_BUILDROOT=$PATH_xxx_BSP_ROOT/buildroot-2022.11
export PATH_ROOTFS_OVERLAY=$PATH_xxx_BSP_ROOT/rootfs_overlay
export PATH_SCRIPTS=$PATH_xxx_BSP_ROOT/scripts
export PATH_OUTPUT=$PATH_xxx_BSP_ROOT/output

# magic string for check if this file is sourced
export xxx_BSP="114514"

# build env setup
export HOST_CORE_COUNT=$(nproc)
export ARCH=arm64
# kernel 4.19 is too old to be built with latest GCC, use prebuilt old ones
export CROSS_COMPILE=$PATH_RK_SDK/prebuilts/gcc/linux-x86/aarch64/gcc-linaro-6.3.1-2017.05-x86_64_aarch64-linux-gnu/bin/aarch64-linux-gnu-
# BSP env setup
export BSP_TARGET_PRODUCT=rk356x

## bootloader

export BSP_BOOTLOADER_USER_CONFIG=/home/localuser/Downloads/ROC-RK3566-PC/rk3566_xxx_bsp/___xxxconfig/rk/bootloader/.config
export BSP_BOOTLOADER_DECONFIG=firefly-rk3568_defconfig
export BSP_BOOTLOADER_DEFCONFIG_FRAGMENT=firefly-rk3566.config
# export BSP_BOOTLOADER_LOADER_FINAL_OUTPUT_FILE=*_loader_*.bin
export BSP_BOOTLOADER_LOADER_INSTALL_NAME=MiniLoaderAll.bin
export BSP_BOOTLOADER_UBOOT_FINAL_OUTPUT_FILE=uboot.img
export BSP_BOOTLOADER_UBOOT_INSTALL_NAME=uboot.img

## kernel
export BSP_KERNEL_USER_CONFIG=/home/localuser/Downloads/ROC-RK3566-PC/rk3566_xxx_bsp/___xxxconfig/rk/kernel/.config
export BSP_KERNEL_DECONFIG=firefly_linux_defconfig
export BSP_KERNEL_DEFCONFIG_FRAGMENT=rk356x_linux.config
export BSP_KERNEL_DTS=rk3566-firefly-roc-pc-mipi101_M101014_BE45_A1
export BSP_KERNEL_ORG_KIMAGE_FILE=arch/$ARCH/boot/Image
# export BSP_KERNEL_BOOT_IMG=extboot.img
export BSP_KERNEL_FIT_ITS=bootramdisk.its
# export BSP_KERNEL_FINAL_OUTPUT_FILE=boot.img.fit
export BSP_KERNEL_FINAL_OUTPUT_FILE=extboot.img
export BSP_KERNEL_INSTALL_NAME=boot.img
### extboot
export BSP_KERNEL_EXTBOOT_SIZE=64M

### BSP_KERNEL_USER_CONFIG must be a vaild path, not just file name

## buildroot
export BSP_BUILDROOT_USER_CONFIG=/home/localuser/Downloads/ROC-RK3566-PC/rk3566_xxx_bsp/___xxxconfig/buildroot/.config
export BSP_BUILDROOT_FINAL_OUTPUT_FILE=rootfs.ext2
export BSP_BUILDROOT_INSTALL_NAME=rootfs.img

## pack image
export BSP_PACKIMG_TOOL_PATH=$PATH_RK_SDK/tools/linux/Linux_Pack_Firmware/rockdev
export BSP_PACKIMG_SCRIPT_FILE=$BSP_PACKIMG_TOOL_PATH/rk356x-mkupdate.sh
export BSP_PACKIMG_AFPTOOL_FILE=$BSP_PACKIMG_TOOL_PATH/afptool
export BSP_PACKIMG_RKIMAGEMAKER_FILE=$BSP_PACKIMG_TOOL_PATH/rkImageMaker
# export BSP_PACKIMG_PACKAGE_FILE=$BSP_PACKIMG_TOOL_PATH/rk356x-package-file
# export BSP_PACKIMG_PARAMETER_FILE=/home/localuser/Downloads/ROC-RK3566-PC/rk3566_xxx_bsp/rk_sdk/device/rockchip/rk356x/parameter-buildroot-fit.txt
export BSP_PACKIMG_PACKAGE_FILE=/home/localuser/Downloads/ROC-RK3566-PC/rk3566_xxx_bsp/___xxxconfig/packimg/rk356x/rk356x-package-file
export BSP_PACKIMG_PARAMETER_FILE=/home/localuser/Downloads/ROC-RK3566-PC/rk3566_xxx_bsp/___xxxconfig/packimg/rk356x/parameter-buildroot-fit.txt
export BSP_PACKIMG_FINAL_OUTPUT_FILE=update.img
export BSP_PACKIMG_INSTALL_NAME=update.img

## flash
export BSP_FLASH_TOOL_PATH=$PATH_RK_SDK/tools/linux/Linux_Upgrade_Tool/Linux_Upgrade_Tool
export BSP_FLASH_TOOL_FILE=$BSP_FLASH_TOOL_PATH/upgrade_tool
```
@freedomforlong 我是自己写了一套脚本来编译, 就干脆不用他自带那一套了

下面是一些节选, env 你要自己准备了

```
#!/bin/bash

# check env
if [[ "$_BSP" != "114514" ]]; then
echo "You must source scripts/envsetup.sh first!"
exit -1
fi

# function
function kernel_build(){

cd $PATH_KERNEL

export KCONFIG_CONFIG=$BSP_KERNEL_USER_CONFIG

if [[ -f "$BSP_KERNEL_USER_CONFIG" ]]; then
# script/kconfig/merge_config.sh .config $BSP_KERNEL_USER_CONFIG
cp $BSP_KERNEL_USER_CONFIG $BSP_KERNEL_USER_CONFIG.bak_$(date +"%Y%m%d_%H%M%S")
else
echo "Warning: Using BSP DECONFIG since $BSP_KERNEL_USER_CONFIG file not found!!!"
make $BSP_KERNEL_DECONFIG $BSP_KERNEL_DEFCONFIG_FRAGMENT
fi

# kernel
make \
-j $HOST_CORE_COUNT

cd $PATH_BSP_ROOT
}

function kernel_extboot_build(){

cd $PATH_KERNEL

EXTBOOT_IMG=$PATH_KERNEL/extboot.img
EXTBOOT_DIR=$PATH_KERNEL/extboot

rm -rf ${EXTBOOT_DIR} && mkdir -p ${EXTBOOT_DIR}/extlinux

KERNEL_VERSION=$(cat include/config/kernel.release)
echo "label rk-kernel.dtb linux-$KERNEL_VERSION" > $EXTBOOT_DIR/extlinux/extlinux.conf

cp $BSP_KERNEL_ORG_KIMAGE_FILE $EXTBOOT_DIR/Image-$KERNEL_VERSION
echo -e "\tkernel /Image-$KERNEL_VERSION" >> $EXTBOOT_DIR/extlinux/extlinux.conf

cp arch/${ARCH}/boot/dts/rockchip/${BSP_KERNEL_DTS}.dtb $EXTBOOT_DIR
ln -sf ${BSP_KERNEL_DTS}.dtb $EXTBOOT_DIR/rk-kernel.dtb

echo -e "\tfdt /rk-kernel.dtb" >> $EXTBOOT_DIR/extlinux/extlinux.conf

if [[ -e/ramdisk.img ]]; then
cp $PATH_KERNEL/ramdisk.img $EXTBOOT_DIR/initrd-$KERNEL_VERSION
echo -e "\tinitrd /initrd-$KERNEL_VERSION" >> $EXTBOOT_DIR/extlinux/extlinux.conf
fi

cp $BSP_KERNEL_USER_CONFIG $EXTBOOT_DIR/config-$KERNEL_VERSION
cp $PATH_KERNEL/System.map $EXTBOOT_DIR/System.map-$KERNEL_VERSION
cp $PATH_KERNEL/logo.bmp $PATH_KERNEL/logo_kernel.bmp $EXTBOOT_DIR/ || true

make INSTALL_MOD_STRIP=1 INSTALL_MOD_PATH=$EXTBOOT_DIR modules_install

rm -rf $EXTBOOT_IMG && truncate -s $BSP_KERNEL_EXTBOOT_SIZE $EXTBOOT_IMG
fakeroot mkfs.ext4 -Fq -L "boot" -d $EXTBOOT_DIR $EXTBOOT_IMG

cd $PATH_BSP_ROOT
}

function kernel_install(){

cd $PATH_KERNEL

# kernel
# ln -sf $PATH_OUTPUT/$BSP_KERNEL_FINAL_OUTPUT_FILE $PATH_OUTPUT/$BSP_KERNEL_INSTALL_NAME
mv $PATH_KERNEL/$BSP_KERNEL_FINAL_OUTPUT_FILE $PATH_OUTPUT/$BSP_KERNEL_INSTALL_NAME

# modules
rm -rf $PATH_OUTPUT/kernel_modules/*
make modules_install \
-j $HOST_CORE_COUNT \
INSTALL_MOD_STRIP=1 \
INSTALL_MOD_PATH=$PATH_OUTPUT/kernel_modules

cd $PATH_BSP_ROOT
}

function kernel_lazy(){
# task order matters!!!
kernel_build
kernel_extboot_build
# kernel_fit
kernel_install
}

```
183 天前
回复了 random1221 创建的主题 Linux centos 7 马上就停止维护了
好了好了知道了 都要成日经贴了
rk 那个框架我记得是最外出脚本编译会覆盖你 menuconfig 配置过的.config 的
当时也被这个恶心了很久
187 天前
回复了 qqqyh 创建的主题 Windows PotPlayer 为什么有那么多人推荐
主要是需求问题, potplayer 功能上要比 mpv/vlc 之类的方便不少
我经常会变速播放或者逐帧查看之类的, pot 这方面非常好用
mpv 和 vlc 给我感觉一直就是一个半成品, 界面/解码/插件几个东西各自为政
至于开源协议, 这方面我觉得大多数人都不在乎, 且事实上跟使用者也没什么关系
你买个扳手, 会关心他的金属铸造方法有没有侵犯其他人的专利吗? 不会, 只会关心能不能拧螺母, 关注的话多半是生活太轻松
187 天前
回复了 itakeman 创建的主题 Windows win 下使用 Linux 命令的方法有哪些?
msys2 完美解决
1  2  3  4  5  6  7  8  9  10 ... 18  
关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1159 人在线   最高记录 6679   ·     Select Language
创意工作者们的社区
World is powered by solitude
VERSION: 3.9.8.5 · 27ms · UTC 18:33 · PVG 02:33 · LAX 10:33 · JFK 13:33
Developed with CodeLauncher
♥ Do have faith in what you're doing.