V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX  ›  424778940  ›  全部回复第 4 页 / 共 17 页
回复总数  340
1  2  3  4  5  6  7  8  9  10 ... 17  
153 天前
回复了 usb7 创建的主题 Linux 从汽车 CAN/OBD 接口读取数据,并上传到云端
@usb7 "可是为什么国外有基于 ARM Linux 树莓派的 CAN 硬件?"

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

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

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

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

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

不然直接用 protobuf3 不好吗?
5 位端口+1
之前有些乞丐配置 vps 甚至都被他扫死机了, 换了之后就基本没有记录了
156 天前
回复了 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
}

```
167 天前
回复了 random1221 创建的主题 Linux centos 7 马上就停止维护了
好了好了知道了 都要成日经贴了
rk 那个框架我记得是最外出脚本编译会覆盖你 menuconfig 配置过的.config 的
当时也被这个恶心了很久
171 天前
回复了 qqqyh 创建的主题 Windows PotPlayer 为什么有那么多人推荐
主要是需求问题, potplayer 功能上要比 mpv/vlc 之类的方便不少
我经常会变速播放或者逐帧查看之类的, pot 这方面非常好用
mpv 和 vlc 给我感觉一直就是一个半成品, 界面/解码/插件几个东西各自为政
至于开源协议, 这方面我觉得大多数人都不在乎, 且事实上跟使用者也没什么关系
你买个扳手, 会关心他的金属铸造方法有没有侵犯其他人的专利吗? 不会, 只会关心能不能拧螺母, 关注的话多半是生活太轻松
171 天前
回复了 itakeman 创建的主题 Windows win 下使用 Linux 命令的方法有哪些?
msys2 完美解决
174 天前
回复了 orioleq 创建的主题 Android 你们用过“水凝膜”“uv 膜”手机贴膜么?
@orioleq 能有什么接口? 高贵的苹果用户 USB Micro-B 不认识?
174 天前
回复了 orioleq 创建的主题 Android 你们用过“水凝膜”“uv 膜”手机贴膜么?
哪有那么多 xx 膜花样
现在要么就塑料膜要么就钢化膜, 其他什么 36D 999D 的都是垃圾营销
uv 钢化膜膜做的好的套装是带 uv 灯的, 曲面屏也没别的可用, 塑料膜会翘边主要是
uv 膜主要要注意的是不要让 uv 胶渗透屏幕下面去, 容易导致屏幕排线出问题
@WoofZJ 笑死 现在搜 “为什么没有 1p 排母” 排第一的是这个帖子
191 天前
回复了 Canglin 创建的主题 C 关于 C 语言的相关问题
不同意楼上某些观点
嵌入式领域, 针对单片机来讲, 很多就算封装过的也是 c 库, cpp 的并不多
c 是很底层的语言, 跟文件/网络之类的东西可以做但现在都不会用 c 来写一般, 除非是特定环境需求
对于 c 语言我的建议是所有语法相关的东西看完就可以了, 针对*inx/win 的 api 没有什么折腾的必要
楼主做"实时计算"方向具体是什么平台和需求呢? 我所接触到的更多的是 rtos 之类的场景, 比如 freertos 或者 zephyr 之类的, 这类是 c 强需求的场景
如果只是希望提升一般分时系统下的程序性能, 用 c 实现不一定是最优解
1  2  3  4  5  6  7  8  9  10 ... 17  
关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1203 人在线   最高记录 6679   ·     Select Language
创意工作者们的社区
World is powered by solitude
VERSION: 3.9.8.5 · 33ms · UTC 23:54 · PVG 07:54 · LAX 15:54 · JFK 18:54
Developed with CodeLauncher
♥ Do have faith in what you're doing.