Banana Pi BPI-R3

פורום רשתות, IT ומחשוב כללי - רשתות, ראוטרים, מחשבים ניידים, אביזרים וכו'.
tzah
עוסק בתחום
עוסק בתחום
תגובות: 834
הצטרף: פברואר 2011
נתן תודות: 78 פעמים
קיבל תודות: 74 פעמים

שרשור שלא נקרא #331 

09/02/2023 21:18  
elxyzad כתב:
הכל זרוק על שולחן בבלאגן גדול.
ראיתי שמוכרים כל מיני מארזים, אבל יש לי סוגים שונים של לוחות..
בתכלס כרגע יש לי רק 2 לוחות פעילים, נתתי כמה שאני אמור לקבל בחזרה.
...
אגב. שיחקתי קצת עם ChatGPT.
הוא הצליח לייצר לי קוד ל-PWM. ממה שאני רואה הוא אפילו עובד :)

elxyzad פותח השרשור
סמל אישי של משתמש
חבר פעיל מאוד
חבר פעיל מאוד
תגובות: 456
הצטרף: נובמבר 2020
נתן תודות: 1 פעם
קיבל תודות: 69 פעמים

שרשור שלא נקרא #332 

12/02/2023 20:54  
tzah כתב:
אגב. שיחקתי קצת עם ChatGPT.
הוא הצליח לייצר לי קוד ל-PWM. ממה שאני רואה הוא אפילו עובד :)
...
מעניין. תראה את הקוד

tzah
עוסק בתחום
עוסק בתחום
תגובות: 834
הצטרף: פברואר 2011
נתן תודות: 78 פעמים
קיבל תודות: 74 פעמים

שרשור שלא נקרא #333 

12/02/2023 21:06  
elxyzad כתב:
מעניין. תראה את הקוד
...
עובד עם המודול שלך:


#!/bin/bash

PWM_CHIP=419
PWM_PERIOD_NS=1000000
PWM_DUTY_CYCLE_MIN_NS=500000
PWM_DUTY_CYCLE_MAX_NS=900000
CPU_TEMP_FILE="/sys/class/thermal/thermal_zone0/temp"

# Request the PWM
echo $PWM_CHIP > /sys/class/soft_pwm/export

# Configure the PWM
echo $PWM_DUTY_CYCLE_MIN_NS > /sys/class/soft_pwm/pwm$PWM_CHIP/duty_cycle
echo $PWM_PERIOD_NS > /sys/class/soft_pwm/pwm$PWM_CHIP/period

# Enable the PWM
echo 1 > /sys/class/soft_pwm/pwm$PWM_CHIP/enable

previous_temp_c=0

while true; do
# Read the CPU temperature
temp=$(cat $CPU_TEMP_FILE)

# Convert the temperature to Celsius
temp_c=$((temp / 1000))

# Calculate the PWM duty cycle based on the temperature
duty_cycle=$((PWM_DUTY_CYCLE_MIN_NS + (temp_c - 40) * (PWM_DUTY_CYCLE_MAX_NS - PWM_DUTY_CYCLE_MIN_NS) / 60))

# Limit the duty cycle to the minimum and maximum values
if [ $duty_cycle -lt $PWM_DUTY_CYCLE_MIN_NS ]; then
duty_cycle=$PWM_DUTY_CYCLE_MIN_NS
fi
if [ $duty_cycle -gt $PWM_DUTY_CYCLE_MAX_NS ]; then
duty_cycle=$PWM_DUTY_CYCLE_MAX_NS
fi

# Set the PWM duty cycle
echo $duty_cycle > /sys/class/soft_pwm/pwm$PWM_CHIP/duty_cycle

# Print the current CPU temperature and fan rotation status
echo "CPU temperature: $temp_c°C"
if [ $temp_c -gt $previous_temp_c ]; then
echo "Fan rotation increased"
elif [ $temp_c -lt $previous_temp_c ]; then
echo "Fan rotation decreased"
else
echo "Fan rotation unchanged"
fi

# Update the previous temperature
previous_temp_c=$temp_c

# Sleep for 1 second
sleep 1
done

tzah
עוסק בתחום
עוסק בתחום
תגובות: 834
הצטרף: פברואר 2011
נתן תודות: 78 פעמים
קיבל תודות: 74 פעמים

שרשור שלא נקרא #334 

בשפת C (צריך לקמפל)

#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>

#define PWM_EXPORT_FILE "/sys/class/soft_pwm/export"
#define PWM_PERIOD_FILE "/sys/class/soft_pwm/pwm419/period"
#define PWM_DUTY_CYCLE_FILE "/sys/class/soft_pwm/pwm419/duty_cycle"
#define PWM_ENABLE_FILE "/sys/class/soft_pwm/pwm419/enable"

void set_pwm_value(char *file, int value) {
int fd = open(file, O_WRONLY);
if (fd < 0) {
printf("Error opening %s\n", file);
exit(1);
}
dprintf(fd, "%d", value);
close(fd);
}

int get_cpu_temperature() {
// To be implemented based on the Banana Pi R3 platform
// For now, return a dummy temperature value of 50 degrees Celsius
return 50;
}

int main() {
set_pwm_value(PWM_EXPORT_FILE, 419);
set_pwm_value(PWM_PERIOD_FILE, 6000);
int duty_cycle = get_cpu_temperature() * 12; // 12 is a coefficient based on the desired temperature-duty cycle relationship
set_pwm_value(PWM_DUTY_CYCLE_FILE, duty_cycle);
set_pwm_value(PWM_ENABLE_FILE, 1);

return 0;
}

elxyzad פותח השרשור
סמל אישי של משתמש
חבר פעיל מאוד
חבר פעיל מאוד
תגובות: 456
הצטרף: נובמבר 2020
נתן תודות: 1 פעם
קיבל תודות: 69 פעמים

שרשור שלא נקרא #335 

חח יפה!
זה סקריפט בקרה משלים לסקריפט pwm ההוא שלא כתבתי לו בקרה. למרות שבסוף זכור לי שכן עשיתי משהו.. שלחתי לך?
בכוונה עשיתי את המודול שלי compatible לpwm device רגיל של לינוקס, ככה אתה יכול להשתמש בסקריפטים נפוצים כאלה לשליטה.
הייתי רוצה לשלב אותו עם הבקרה המובנית בלינוקס, אני אעשה את זה בהמשך.. ככה לא תצטרך שום סקריפטים

הקוד c הוא בדיחה. קוד שקורא לsysfs וזהו.. עדיף סקריפט. מה גם שהוא לא עובד בכלל.

אין למתכנתים עדיין מה לחשוש מchatgpt כנראה.

tzah
עוסק בתחום
עוסק בתחום
תגובות: 834
הצטרף: פברואר 2011
נתן תודות: 78 פעמים
קיבל תודות: 74 פעמים

שרשור שלא נקרא #336 

13/02/2023 7:10  
elxyzad כתב:
חח יפה!
זה סקריפט בקרה משלים לסקריפט pwm ההוא שלא כתבתי לו בקרה. למרות שבסוף זכור לי שכן עשיתי משהו.. שלחתי לך?
בכוונה עשיתי את המודול שלי compatible לpwm device רגיל של לינוקס, ככה אתה יכול להשתמש בסקריפטים נפוצים כאלה לשליטה.
הייתי רוצה לשלב אותו עם הבקרה המובנית בלינוקס, אני אעשה את זה בהמשך.. ככה לא תצטרך שום סקריפטים

הקוד c הוא בדיחה. קוד שקורא לsysfs וזהו.. עדיף סקריפט. מה גם שהוא לא עובד בכלל.

אין למתכנתים עדיין מה לחשוש מchatgpt כנראה.
...
אז בדקת את הקוד בשפת C?
איך אני בכלל מוצא קומפלייר נורמלי ב- OpenWrt? יש חבילה ספציפית מומלצת?

הייתי רוצה לשלב אותו עם הבקרה המובנית בלינוקס, אני אעשה את זה בהמשך.. ככה לא תצטרך שום סקריפטים
הכי טוב.

elxyzad פותח השרשור
סמל אישי של משתמש
חבר פעיל מאוד
חבר פעיל מאוד
תגובות: 456
הצטרף: נובמבר 2020
נתן תודות: 1 פעם
קיבל תודות: 69 פעמים

שרשור שלא נקרא #337 

13/02/2023 9:29  
tzah כתב:
אז בדקת את הקוד בשפת C?
איך אני בכלל מוצא קומפלייר נורמלי ב- OpenWrt? יש חבילה ספציפית מומלצת?

הייתי רוצה לשלב אותו עם הבקרה המובנית בלינוקס, אני אעשה את זה בהמשך.. ככה לא תצטרך שום סקריפטים
הכי טוב.
...
אין מה לבדוק, אני רואה מה הוא עושה.
אין אפילו לולאה בקוד, הוא רק קורא ערך לא נכון של טמפרטורה (כי הוא מצפה ממך לממש את זה) ואז עושה קריאה ל sysfs והתוכנה נסגרת.

אתה יכול לקמפל או על המחשב שלך דרך ה build system שלהם באמצעות cross-compile, או בראוטר עצמו בהנחה שיש לך את כל ה build essentials בחבילות של openwrt.. לא בדקתי

tzah
עוסק בתחום
עוסק בתחום
תגובות: 834
הצטרף: פברואר 2011
נתן תודות: 78 פעמים
קיבל תודות: 74 פעמים

שרשור שלא נקרא #338 

13/02/2023 10:14  
elxyzad כתב:
אין מה לבדוק, אני רואה מה הוא עושה.
אין אפילו לולאה בקוד, הוא רק קורא ערך לא נכון של טמפרטורה (כי הוא מצפה ממך לממש את זה) ואז עושה קריאה ל sysfs והתוכנה נסגרת.

אתה יכול לקמפל או על המחשב שלך דרך ה build system שלהם באמצעות cross-compile, או בראוטר עצמו בהנחה שיש לך את כל ה build essentials בחבילות של openwrt.. לא בדקתי
...
נראה לי שזה יעבוד:

#include <stdio.h>
#include <stdlib.h>
#include <fcntl.h>
#include <unistd.h>

#define PWM_CTRL_FILE "/sys/class/soft_pwm/pwm419/enable"
#define CPU_TEMP_FILE "/sys/class/thermal/thermal_zone0/temp"

void set_pwm(int pwm_value) {
int pwm_fd = open(PWM_CTRL_FILE, O_RDWR);
if (pwm_fd < 0) {
perror("Unable to open PWM control file");
exit(1);
}

char buf[2];
snprintf(buf, sizeof(buf), "%d", pwm_value);
if (write(pwm_fd, buf, sizeof(buf)) < 0) {
perror("Unable to write PWM value");
exit(1);
}

close(pwm_fd);
}

int get_cpu_temp() {
int temp_fd = open(CPU_TEMP_FILE, O_RDONLY);
if (temp_fd < 0) {
perror("Unable to open CPU temperature file");
exit(1);
}

char buf[5];
int len = read(temp_fd, buf, sizeof(buf));
if (len < 0) {
perror("Unable to read CPU temperature");
exit(1);
}

close(temp_fd);

buf[len] = '\0';
return atoi(buf) / 1000;
}

int main() {
int pwm_value = 0;
int cpu_temp = get_cpu_temp();

if (cpu_temp > 70) {
pwm_value = 100;
} else if (cpu_temp > 60) {
pwm_value = 50;
}

set_pwm(pwm_value);
return 0;
}

elxyzad פותח השרשור
סמל אישי של משתמש
חבר פעיל מאוד
חבר פעיל מאוד
תגובות: 456
הצטרף: נובמבר 2020
נתן תודות: 1 פעם
קיבל תודות: 69 פעמים

שרשור שלא נקרא #339 

לא יעבוד.
Set_pwm כותב למקום הלא נכון.
get_temp הבאפר קטן מידי.
והכי חשוב, אין לולאה בכלל

tzah
עוסק בתחום
עוסק בתחום
תגובות: 834
הצטרף: פברואר 2011
נתן תודות: 78 פעמים
קיבל תודות: 74 פעמים

שרשור שלא נקרא #340 

13/02/2023 21:28  
elxyzad כתב:
לא יעבוד.
Set_pwm כותב למקום הלא נכון.
get_temp הבאפר קטן מידי.
והכי חשוב, אין לולאה בכלל
...

זה סקריפט בדיקה הכי בסיסי. לפחות זה מה שביקשתי מאדון GPT :)

elxyzad פותח השרשור
סמל אישי של משתמש
חבר פעיל מאוד
חבר פעיל מאוד
תגובות: 456
הצטרף: נובמבר 2020
נתן תודות: 1 פעם
קיבל תודות: 69 פעמים

שרשור שלא נקרא #341 

13/02/2023 23:12  
tzah כתב:
זה סקריפט בדיקה הכי בסיסי. לפחות זה מה שביקשתי מאדון GPT :)
...
שפת c היא בערך ההפך המוחלט משפת סקריפטים..
היום למדנו שאי אפשר להסתמך על הקוד ש chatgpt פולט.

tzah
עוסק בתחום
עוסק בתחום
תגובות: 834
הצטרף: פברואר 2011
נתן תודות: 78 פעמים
קיבל תודות: 74 פעמים

שרשור שלא נקרא #342 

14/02/2023 5:53  
elxyzad כתב:
שפת c היא בערך ההפך המוחלט משפת סקריפטים..
היום למדנו שאי אפשר להסתמך על הקוד ש chatgpt פולט.
...
אגב. גם אם תבקש ממנו לייצר פלאגין ל- WordPress בשפת PHP , גם שם התוצאה לא תהיה מושלמת
והקוד לא יהיה תקין. לדעתי יש בעיה כללית של איך ללמד את ה- "מערכת" (אלגוריתם) ללמוד תחמים חדשים. לכן יש צורך גם בהתערבות אנושית.
לעומת זאת. בדברים פשוטים, כגון יצירת סקריפטים ה- ChatGPT כן יכול לעשות עבודה טובה.

elxyzad פותח השרשור
סמל אישי של משתמש
חבר פעיל מאוד
חבר פעיל מאוד
תגובות: 456
הצטרף: נובמבר 2020
נתן תודות: 1 פעם
קיבל תודות: 69 פעמים

שרשור שלא נקרא #343 

16/02/2023 17:56  
tzah כתב:
אגב. גם אם תבקש ממנו לייצר פלאגין ל- WordPress בשפת PHP , גם שם התוצאה לא תהיה מושלמת
והקוד לא יהיה תקין. לדעתי יש בעיה כללית של איך ללמד את ה- "מערכת" (אלגוריתם) ללמוד תחמים חדשים. לכן יש צורך גם בהתערבות אנושית.
לעומת זאת. בדברים פשוטים, כגון יצירת סקריפטים ה- ChatGPT כן יכול לעשות עבודה טובה.
...
בידיוק ראיתי כמה Sinovoip התלהבו מהביקורת שלך..

Chatgpt בסך הכל משכתב קוד בצורה חכמה לפי הקונטקסט של השיחה. הוא לא באמת כותב קוד. התוצאה תלויה בתבנית שבה הוא משתמש, לא הסיבוכיות או משהו..

אני בהתלבטות מה לעשות לגבי המודול, אני יכול לעשות cooling device חדש, לקשור אותו ל thermal zone ולעשות לו bind עם הpwm device.. אבל אני מאוד מגביל את השימוש בpwm device ככה..
זה גם חתיכת overkill למטרה הזאת של בקרה.
אופציה נוספת היא ליצור מוד עבודה ל pwm device, ידני כמו עכשיו, ו bind אוטומטי לcooling device. אבל אז הוא כבר לא זהה ל pwm device רגיל
אני לא מוצא זמן להתעסק בזה בכלל..

tzah
עוסק בתחום
עוסק בתחום
תגובות: 834
הצטרף: פברואר 2011
נתן תודות: 78 פעמים
קיבל תודות: 74 פעמים

שרשור שלא נקרא #344 

16/02/2023 18:17  
elxyzad כתב:
בידיוק ראיתי כמה Sinovoip התלהבו מהביקורת שלך..

Chatgpt בסך הכל משכתב קוד בצורה חכמה לפי הקונטקסט של השיחה. הוא לא באמת כותב קוד. התוצאה תלויה בתבנית שבה הוא משתמש, לא הסיבוכיות או משהו..

אני בהתלבטות מה לעשות לגבי המודול, אני יכול לעשות cooling device חדש, לקשור אותו ל thermal zone ולעשות לו bind עם הpwm device.. אבל אני מאוד מגביל את השימוש בpwm device ככה..
זה גם חתיכת overkill למטרה הזאת של בקרה.
אופציה נוספת היא ליצור מוד עבודה ל pwm device, ידני כמו עכשיו, ו bind אוטומטי לcooling device. אבל אז הוא כבר לא זהה ל pwm device רגיל
אני לא מוצא זמן להתעסק בזה בכלל..
...
בידיוק ראיתי כמה Sinovoip התלהבו מהביקורת שלך..
כן, הם מאוד אהבו. הפעם השקעתי בסקירה. לקח לי גם לא מעט זמן (סקירה בהמשכים). עד שהזמנתי את גוף הקירור, חוטים, קונקטורים מעלי אקספרס עברו לפחות חודשיים.


Chatgpt בסך הכל משכתב קוד בצורה חכמה לפי הקונטקסט של השיחה. הוא לא באמת כותב קוד. התוצאה תלויה בתבנית שבה הוא משתמש, לא הסיבוכיות או משהו..

זה לא רק זה, זה מתקדם יותר. לדעתי הוא גם לוקח פיסות של מידע מאתרי אינטרנט ומנסה לתת תשובה הכי ממוקדת. הבעיה היא שצריך גם לאמן את המודל הלמידה. אם המפתחים היו קצת יותר חכמים, הם גם היו מוסיפים לחלק מהשתמשים, כפתורים אינטראקטיבים בסגנון: מדויק, מדויק חלקית, או טעות בתמורה למנוי חינמי או תשלום. אומנם Machine Learning , אבל מישהו צריך לתת פידבק כלשהוא האם המידע אמין ומדויק. אותו סיפור עם פלטפורמת ויקיפדיה.


מצאתי את ההקישור הבא:
https://gist.github.com/magnetikonline/ ... f654d5ad79

הקובץ עוקף את הגדרות הקרנל. ללוח יש 2GB זכרון אז לא נראה שזה יזיק לעשות קצת Tweaking.
לדעתי יש שיפור לטובה בפתיחת מס' רב של חיבורים בו זמנית.


צריך למצוא פתרון שעובד עם כל גרסאות הקרנל. הנוכחיות והעתידיות.

elxyzad פותח השרשור
סמל אישי של משתמש
חבר פעיל מאוד
חבר פעיל מאוד
תגובות: 456
הצטרף: נובמבר 2020
נתן תודות: 1 פעם
קיבל תודות: 69 פעמים

שרשור שלא נקרא #345 

16/02/2023 21:57  
tzah כתב:
בידיוק ראיתי כמה Sinovoip התלהבו מהביקורת שלך..
כן, הם מאוד אהבו. הפעם השקעתי בסקירה. לקח לי גם לא מעט זמן (סקירה בהמשכים). עד שהזמנתי את גוף הקירור, חוטים, קונקטורים מעלי אקספרס עברו לפחות חודשיים.


Chatgpt בסך הכל משכתב קוד בצורה חכמה לפי הקונטקסט של השיחה. הוא לא באמת כותב קוד. התוצאה תלויה בתבנית שבה הוא משתמש, לא הסיבוכיות או משהו..

זה לא רק זה, זה מתקדם יותר. לדעתי הוא גם לוקח פיסות של מידע מאתרי אינטרנט ומנסה לתת תשובה הכי ממוקדת. הבעיה היא שצריך גם לאמן את המודל הלמידה. אם המפתחים היו קצת יותר חכמים, הם גם היו מוסיפים לחלק מהשתמשים, כפתורים אינטראקטיבים בסגנון: מדויק, מדויק חלקית, או טעות בתמורה למנוי חינמי או תשלום. אומנם Machine Learning , אבל מישהו צריך לתת פידבק כלשהוא האם המידע אמין ומדויק. אותו סיפור עם פלטפורמת ויקיפדיה.


מצאתי את ההקישור הבא:
https://gist.github.com/magnetikonline/ ... f654d5ad79

הקובץ עוקף את הגדרות הקרנל. ללוח יש 2GB זכרון אז לא נראה שזה יזיק לעשות קצת Tweaking.
לדעתי יש שיפור לטובה בפתיחת מס' רב של חיבורים בו זמנית.


צריך למצוא פתרון שעובד עם כל גרסאות הקרנל. הנוכחיות והעתידיות.
...
יאללה שישלחו לך 2 בורדים בפעם הבאה! (ותביא לי אחד כמובן)

כמובן שהם משתמשים בתוצאות מהאינטרנט, יותר נכון מ stackoverflow.

לא שווה להתעסק בקובץ sysctl. רוב הדברים שם באים עם tradeoff, אתה תפגע במשהו אחר בתמורה. למשל באפר יותר גדול יכול לתת לך throughput יותר גבוה אבל latency יותר גבוה בהתאם. גם אם תשפר משהו זה כנראה יהיה מינורי.. אבל תעדכן אם מצאת משהו מועיל.

אי אפשר לדאוג שהמודול יהיה מתאים לכל גרסאת קרנל.. רק לשים את הקוד כחבילה כשאתה בונה את הimage. זאת הבעיה ב snapshot, כל יומיים משנים קרנל. בגרסה יציבה לא משנים אז זה יהיה יותר פשוט

שלח תגובה

חזור אל “רשתות, אינטרנט ו- Fiber”