Pull request #87: am64x/am243: tamagawa: Enable periodic trigger mode for multi-channel

Merge in PINDSW/motor_control_sdk from a0503545_tamagawa to next

* commit '10ae899ab6ace09c4f69d78916148e3d94100d19':
  am64x/am243: tamagawa: resolve reviewer comments
  am64x/am243: tamagawa: add global reinit
  am64x/am243: tamagawa: Enable periodic trigger mode for multi-channel
This commit is contained in:
Manoj Koppolu 2023-12-20 23:43:54 -06:00 committed by Dhaval Khandla
commit 4c8bed70f8
45 changed files with 854 additions and 97 deletions

View File

@ -4,5 +4,5 @@
* View (ROV) tool. * View (ROV) tool.
*/ */
var crovFiles = [ var crovFiles = [
"mcu_plus_sdk/kernel/freertos/rov/FreeRTOS.rov.js", "mcu_plus_sdk/source/kernel/freertos/rov/FreeRTOS.rov.js",
]; ];

View File

@ -4,5 +4,5 @@
* View (ROV) tool. * View (ROV) tool.
*/ */
var crovFiles = [ var crovFiles = [
"mcu_plus_sdk/kernel/freertos/rov/FreeRTOS.rov.js", "mcu_plus_sdk/source/kernel/freertos/rov/FreeRTOS.rov.js",
]; ];

View File

@ -4,5 +4,5 @@
* View (ROV) tool. * View (ROV) tool.
*/ */
var crovFiles = [ var crovFiles = [
"mcu_plus_sdk/kernel/freertos/rov/FreeRTOS.rov.js", "mcu_plus_sdk/source/kernel/freertos/rov/FreeRTOS.rov.js",
]; ];

View File

@ -4,5 +4,5 @@
* View (ROV) tool. * View (ROV) tool.
*/ */
var crovFiles = [ var crovFiles = [
"mcu_plus_sdk/kernel/freertos/rov/FreeRTOS.rov.js", "mcu_plus_sdk/source/kernel/freertos/rov/FreeRTOS.rov.js",
]; ];

View File

@ -4,5 +4,5 @@
* View (ROV) tool. * View (ROV) tool.
*/ */
var crovFiles = [ var crovFiles = [
"mcu_plus_sdk/kernel/freertos/rov/FreeRTOS.rov.js", "mcu_plus_sdk/source/kernel/freertos/rov/FreeRTOS.rov.js",
]; ];

View File

@ -5,6 +5,7 @@ let device = "am243x";
const files = { const files = {
common: [ common: [
"tamagawa_diagnostic.c", "tamagawa_diagnostic.c",
"tamagawa_periodic_trigger.c",
"main.c", "main.c",
], ],
}; };
@ -34,6 +35,7 @@ const includes_freertos_r5f = {
"${MOTOR_CONTROL_SDK_PATH}/mcu_plus_sdk/source/kernel/freertos/FreeRTOS-Kernel/include", "${MOTOR_CONTROL_SDK_PATH}/mcu_plus_sdk/source/kernel/freertos/FreeRTOS-Kernel/include",
"${MOTOR_CONTROL_SDK_PATH}/mcu_plus_sdk/source/kernel/freertos/portable/TI_ARM_CLANG/ARM_CR5F", "${MOTOR_CONTROL_SDK_PATH}/mcu_plus_sdk/source/kernel/freertos/portable/TI_ARM_CLANG/ARM_CR5F",
"${MOTOR_CONTROL_SDK_PATH}/mcu_plus_sdk/source/kernel/freertos/config/am243x/r5f", "${MOTOR_CONTROL_SDK_PATH}/mcu_plus_sdk/source/kernel/freertos/config/am243x/r5f",
"${MOTOR_CONTROL_SDK_PATH}/examples/position_sense/tamagawa_diagnostic",
], ],
}; };

View File

@ -5,6 +5,7 @@ let device = "am64x";
const files = { const files = {
common: [ common: [
"tamagawa_diagnostic.c", "tamagawa_diagnostic.c",
"tamagawa_periodic_trigger.c",
"main.c", "main.c",
], ],
}; };
@ -34,6 +35,7 @@ const includes_freertos_r5f = {
"${MOTOR_CONTROL_SDK_PATH}/mcu_plus_sdk/source/kernel/freertos/FreeRTOS-Kernel/include", "${MOTOR_CONTROL_SDK_PATH}/mcu_plus_sdk/source/kernel/freertos/FreeRTOS-Kernel/include",
"${MOTOR_CONTROL_SDK_PATH}/mcu_plus_sdk/source/kernel/freertos/portable/TI_ARM_CLANG/ARM_CR5F", "${MOTOR_CONTROL_SDK_PATH}/mcu_plus_sdk/source/kernel/freertos/portable/TI_ARM_CLANG/ARM_CR5F",
"${MOTOR_CONTROL_SDK_PATH}/mcu_plus_sdk/source/kernel/freertos/config/am64x/r5f", "${MOTOR_CONTROL_SDK_PATH}/mcu_plus_sdk/source/kernel/freertos/config/am64x/r5f",
"${MOTOR_CONTROL_SDK_PATH}/examples/position_sense/tamagawa_diagnostic",
], ],
}; };

View File

@ -64,6 +64,9 @@ tamagawa1.PRU_ICSSG0_PRU.$assign = "PRU_ICSSG0_PRU1";
const pruicss = scripting.addModule("/drivers/pruicss/pruicss", {}, false); const pruicss = scripting.addModule("/drivers/pruicss/pruicss", {}, false);
const pruicss1 = pruicss.addInstance({}, false); const pruicss1 = pruicss.addInstance({}, false);
pruicss1.$name = "CONFIG_PRU_ICSS0"; pruicss1.$name = "CONFIG_PRU_ICSS0";
pruicss1.intcMapping.create(1);
pruicss1.intcMapping[0].$name = "CONFIG_ICSS0_INTC_MAPPING0";
pruicss1.intcMapping[0].event = "18";
tamagawa1.pru = pruicss1; tamagawa1.pru = pruicss1;
pruicss1.AdditionalICSSSettings[0].$name = "CONFIG_PRU_ICSS_IO0"; pruicss1.AdditionalICSSSettings[0].$name = "CONFIG_PRU_ICSS_IO0";

View File

@ -35,6 +35,7 @@
-I${MOTOR_CONTROL_SDK_PATH}/mcu_plus_sdk/source/kernel/freertos/FreeRTOS-Kernel/include -I${MOTOR_CONTROL_SDK_PATH}/mcu_plus_sdk/source/kernel/freertos/FreeRTOS-Kernel/include
-I${MOTOR_CONTROL_SDK_PATH}/mcu_plus_sdk/source/kernel/freertos/portable/TI_ARM_CLANG/ARM_CR5F -I${MOTOR_CONTROL_SDK_PATH}/mcu_plus_sdk/source/kernel/freertos/portable/TI_ARM_CLANG/ARM_CR5F
-I${MOTOR_CONTROL_SDK_PATH}/mcu_plus_sdk/source/kernel/freertos/config/am243x/r5f -I${MOTOR_CONTROL_SDK_PATH}/mcu_plus_sdk/source/kernel/freertos/config/am243x/r5f
-I${MOTOR_CONTROL_SDK_PATH}/examples/position_sense/tamagawa_diagnostic
-mcpu=cortex-r5 -mcpu=cortex-r5
-mfloat-abi=hard -mfloat-abi=hard
-mfpu=vfpv3-d16 -mfpu=vfpv3-d16
@ -97,6 +98,8 @@
<pathVariable name="MOTOR_CONTROL_SDK_PATH" path="${COM_TI_MOTOR_CONTROL_SDK_AMXXX_INSTALL_DIR}" scope="project" /> <pathVariable name="MOTOR_CONTROL_SDK_PATH" path="${COM_TI_MOTOR_CONTROL_SDK_AMXXX_INSTALL_DIR}" scope="project" />
<file path="../../../../tamagawa_diagnostic.c" openOnCreation="false" excludeFromBuild="false" action="copy"> <file path="../../../../tamagawa_diagnostic.c" openOnCreation="false" excludeFromBuild="false" action="copy">
</file> </file>
<file path="../../../../tamagawa_periodic_trigger.c" openOnCreation="false" excludeFromBuild="false" action="copy">
</file>
<file path="../main.c" openOnCreation="false" excludeFromBuild="false" action="copy"> <file path="../main.c" openOnCreation="false" excludeFromBuild="false" action="copy">
</file> </file>
<file path="linker.cmd" openOnCreation="false" excludeFromBuild="false" action="copy"> <file path="linker.cmd" openOnCreation="false" excludeFromBuild="false" action="copy">

View File

@ -39,6 +39,7 @@ endif
FILES_common := \ FILES_common := \
tamagawa_diagnostic.c \ tamagawa_diagnostic.c \
tamagawa_periodic_trigger.c \
main.c \ main.c \
ti_drivers_config.c \ ti_drivers_config.c \
ti_drivers_open_close.c \ ti_drivers_open_close.c \
@ -61,6 +62,7 @@ INCLUDES_common := \
-I${MOTOR_CONTROL_SDK_PATH}/mcu_plus_sdk/source/kernel/freertos/FreeRTOS-Kernel/include \ -I${MOTOR_CONTROL_SDK_PATH}/mcu_plus_sdk/source/kernel/freertos/FreeRTOS-Kernel/include \
-I${MOTOR_CONTROL_SDK_PATH}/mcu_plus_sdk/source/kernel/freertos/portable/TI_ARM_CLANG/ARM_CR5F \ -I${MOTOR_CONTROL_SDK_PATH}/mcu_plus_sdk/source/kernel/freertos/portable/TI_ARM_CLANG/ARM_CR5F \
-I${MOTOR_CONTROL_SDK_PATH}/mcu_plus_sdk/source/kernel/freertos/config/am243x/r5f \ -I${MOTOR_CONTROL_SDK_PATH}/mcu_plus_sdk/source/kernel/freertos/config/am243x/r5f \
-I${MOTOR_CONTROL_SDK_PATH}/examples/position_sense/tamagawa_diagnostic \
-Igenerated \ -Igenerated \
DEFINES_common := \ DEFINES_common := \

View File

@ -83,6 +83,9 @@ tamagawa1.ENC2_EN.GPIO.gpioPin.$assign = "MMC1_SDCD";
const pruicss = scripting.addModule("/drivers/pruicss/pruicss", {}, false); const pruicss = scripting.addModule("/drivers/pruicss/pruicss", {}, false);
const pruicss1 = pruicss.addInstance({}, false); const pruicss1 = pruicss.addInstance({}, false);
pruicss1.$name = "CONFIG_PRU_ICSS0"; pruicss1.$name = "CONFIG_PRU_ICSS0";
pruicss1.intcMapping.create(1);
pruicss1.intcMapping[0].$name = "CONFIG_ICSS0_INTC_MAPPING0";
pruicss1.intcMapping[0].event = "18";
tamagawa1.pru = pruicss1; tamagawa1.pru = pruicss1;
pruicss1.AdditionalICSSSettings[0].$name = "CONFIG_PRU_ICSS_IO0"; pruicss1.AdditionalICSSSettings[0].$name = "CONFIG_PRU_ICSS_IO0";

View File

@ -35,6 +35,7 @@
-I${MOTOR_CONTROL_SDK_PATH}/mcu_plus_sdk/source/kernel/freertos/FreeRTOS-Kernel/include -I${MOTOR_CONTROL_SDK_PATH}/mcu_plus_sdk/source/kernel/freertos/FreeRTOS-Kernel/include
-I${MOTOR_CONTROL_SDK_PATH}/mcu_plus_sdk/source/kernel/freertos/portable/TI_ARM_CLANG/ARM_CR5F -I${MOTOR_CONTROL_SDK_PATH}/mcu_plus_sdk/source/kernel/freertos/portable/TI_ARM_CLANG/ARM_CR5F
-I${MOTOR_CONTROL_SDK_PATH}/mcu_plus_sdk/source/kernel/freertos/config/am243x/r5f -I${MOTOR_CONTROL_SDK_PATH}/mcu_plus_sdk/source/kernel/freertos/config/am243x/r5f
-I${MOTOR_CONTROL_SDK_PATH}/examples/position_sense/tamagawa_diagnostic
-mcpu=cortex-r5 -mcpu=cortex-r5
-mfloat-abi=hard -mfloat-abi=hard
-mfpu=vfpv3-d16 -mfpu=vfpv3-d16
@ -97,6 +98,8 @@
<pathVariable name="MOTOR_CONTROL_SDK_PATH" path="${COM_TI_MOTOR_CONTROL_SDK_AMXXX_INSTALL_DIR}" scope="project" /> <pathVariable name="MOTOR_CONTROL_SDK_PATH" path="${COM_TI_MOTOR_CONTROL_SDK_AMXXX_INSTALL_DIR}" scope="project" />
<file path="../../../../tamagawa_diagnostic.c" openOnCreation="false" excludeFromBuild="false" action="copy"> <file path="../../../../tamagawa_diagnostic.c" openOnCreation="false" excludeFromBuild="false" action="copy">
</file> </file>
<file path="../../../../tamagawa_periodic_trigger.c" openOnCreation="false" excludeFromBuild="false" action="copy">
</file>
<file path="../main.c" openOnCreation="false" excludeFromBuild="false" action="copy"> <file path="../main.c" openOnCreation="false" excludeFromBuild="false" action="copy">
</file> </file>
<file path="linker.cmd" openOnCreation="false" excludeFromBuild="false" action="copy"> <file path="linker.cmd" openOnCreation="false" excludeFromBuild="false" action="copy">

View File

@ -39,6 +39,7 @@ endif
FILES_common := \ FILES_common := \
tamagawa_diagnostic.c \ tamagawa_diagnostic.c \
tamagawa_periodic_trigger.c \
main.c \ main.c \
ti_drivers_config.c \ ti_drivers_config.c \
ti_drivers_open_close.c \ ti_drivers_open_close.c \
@ -61,6 +62,7 @@ INCLUDES_common := \
-I${MOTOR_CONTROL_SDK_PATH}/mcu_plus_sdk/source/kernel/freertos/FreeRTOS-Kernel/include \ -I${MOTOR_CONTROL_SDK_PATH}/mcu_plus_sdk/source/kernel/freertos/FreeRTOS-Kernel/include \
-I${MOTOR_CONTROL_SDK_PATH}/mcu_plus_sdk/source/kernel/freertos/portable/TI_ARM_CLANG/ARM_CR5F \ -I${MOTOR_CONTROL_SDK_PATH}/mcu_plus_sdk/source/kernel/freertos/portable/TI_ARM_CLANG/ARM_CR5F \
-I${MOTOR_CONTROL_SDK_PATH}/mcu_plus_sdk/source/kernel/freertos/config/am243x/r5f \ -I${MOTOR_CONTROL_SDK_PATH}/mcu_plus_sdk/source/kernel/freertos/config/am243x/r5f \
-I${MOTOR_CONTROL_SDK_PATH}/examples/position_sense/tamagawa_diagnostic \
-Igenerated \ -Igenerated \
DEFINES_common := \ DEFINES_common := \

View File

@ -4,5 +4,5 @@
* View (ROV) tool. * View (ROV) tool.
*/ */
var crovFiles = [ var crovFiles = [
"mcu_plus_sdk/kernel/freertos/rov/FreeRTOS.rov.js", "mcu_plus_sdk/source/kernel/freertos/rov/FreeRTOS.rov.js",
]; ];

View File

@ -64,6 +64,9 @@ tamagawa1.PRU_ICSSG0_PRU.$assign = "PRU_ICSSG0_PRU1";
const pruicss = scripting.addModule("/drivers/pruicss/pruicss", {}, false); const pruicss = scripting.addModule("/drivers/pruicss/pruicss", {}, false);
const pruicss1 = pruicss.addInstance({}, false); const pruicss1 = pruicss.addInstance({}, false);
pruicss1.$name = "CONFIG_PRU_ICSS0"; pruicss1.$name = "CONFIG_PRU_ICSS0";
pruicss1.intcMapping.create(1);
pruicss1.intcMapping[0].$name = "CONFIG_ICSS0_INTC_MAPPING0";
pruicss1.intcMapping[0].event = "18";
tamagawa1.pru = pruicss1; tamagawa1.pru = pruicss1;
pruicss1.AdditionalICSSSettings[0].$name = "CONFIG_PRU_ICSS_IO0"; pruicss1.AdditionalICSSSettings[0].$name = "CONFIG_PRU_ICSS_IO0";

View File

@ -35,6 +35,7 @@
-I${MOTOR_CONTROL_SDK_PATH}/mcu_plus_sdk/source/kernel/freertos/FreeRTOS-Kernel/include -I${MOTOR_CONTROL_SDK_PATH}/mcu_plus_sdk/source/kernel/freertos/FreeRTOS-Kernel/include
-I${MOTOR_CONTROL_SDK_PATH}/mcu_plus_sdk/source/kernel/freertos/portable/TI_ARM_CLANG/ARM_CR5F -I${MOTOR_CONTROL_SDK_PATH}/mcu_plus_sdk/source/kernel/freertos/portable/TI_ARM_CLANG/ARM_CR5F
-I${MOTOR_CONTROL_SDK_PATH}/mcu_plus_sdk/source/kernel/freertos/config/am64x/r5f -I${MOTOR_CONTROL_SDK_PATH}/mcu_plus_sdk/source/kernel/freertos/config/am64x/r5f
-I${MOTOR_CONTROL_SDK_PATH}/examples/position_sense/tamagawa_diagnostic
-mcpu=cortex-r5 -mcpu=cortex-r5
-mfloat-abi=hard -mfloat-abi=hard
-mfpu=vfpv3-d16 -mfpu=vfpv3-d16
@ -97,6 +98,8 @@
<pathVariable name="MOTOR_CONTROL_SDK_PATH" path="${COM_TI_MOTOR_CONTROL_SDK_AMXXX_INSTALL_DIR}" scope="project" /> <pathVariable name="MOTOR_CONTROL_SDK_PATH" path="${COM_TI_MOTOR_CONTROL_SDK_AMXXX_INSTALL_DIR}" scope="project" />
<file path="../../../../tamagawa_diagnostic.c" openOnCreation="false" excludeFromBuild="false" action="copy"> <file path="../../../../tamagawa_diagnostic.c" openOnCreation="false" excludeFromBuild="false" action="copy">
</file> </file>
<file path="../../../../tamagawa_periodic_trigger.c" openOnCreation="false" excludeFromBuild="false" action="copy">
</file>
<file path="../main.c" openOnCreation="false" excludeFromBuild="false" action="copy"> <file path="../main.c" openOnCreation="false" excludeFromBuild="false" action="copy">
</file> </file>
<file path="linker.cmd" openOnCreation="false" excludeFromBuild="false" action="copy"> <file path="linker.cmd" openOnCreation="false" excludeFromBuild="false" action="copy">

View File

@ -39,6 +39,7 @@ endif
FILES_common := \ FILES_common := \
tamagawa_diagnostic.c \ tamagawa_diagnostic.c \
tamagawa_periodic_trigger.c \
main.c \ main.c \
ti_drivers_config.c \ ti_drivers_config.c \
ti_drivers_open_close.c \ ti_drivers_open_close.c \
@ -61,6 +62,7 @@ INCLUDES_common := \
-I${MOTOR_CONTROL_SDK_PATH}/mcu_plus_sdk/source/kernel/freertos/FreeRTOS-Kernel/include \ -I${MOTOR_CONTROL_SDK_PATH}/mcu_plus_sdk/source/kernel/freertos/FreeRTOS-Kernel/include \
-I${MOTOR_CONTROL_SDK_PATH}/mcu_plus_sdk/source/kernel/freertos/portable/TI_ARM_CLANG/ARM_CR5F \ -I${MOTOR_CONTROL_SDK_PATH}/mcu_plus_sdk/source/kernel/freertos/portable/TI_ARM_CLANG/ARM_CR5F \
-I${MOTOR_CONTROL_SDK_PATH}/mcu_plus_sdk/source/kernel/freertos/config/am64x/r5f \ -I${MOTOR_CONTROL_SDK_PATH}/mcu_plus_sdk/source/kernel/freertos/config/am64x/r5f \
-I${MOTOR_CONTROL_SDK_PATH}/examples/position_sense/tamagawa_diagnostic \
-Igenerated \ -Igenerated \
DEFINES_common := \ DEFINES_common := \

View File

@ -4,5 +4,5 @@
* View (ROV) tool. * View (ROV) tool.
*/ */
var crovFiles = [ var crovFiles = [
"mcu_plus_sdk/kernel/freertos/rov/FreeRTOS.rov.js", "mcu_plus_sdk/source/kernel/freertos/rov/FreeRTOS.rov.js",
]; ];

View File

@ -5,6 +5,7 @@ let device = "am243x";
const files = { const files = {
common: [ common: [
"tamagawa_diagnostic.c", "tamagawa_diagnostic.c",
"tamagawa_periodic_trigger.c",
"main.c", "main.c",
], ],
}; };
@ -34,6 +35,7 @@ const includes_freertos_r5f = {
"${MOTOR_CONTROL_SDK_PATH}/mcu_plus_sdk/source/kernel/freertos/FreeRTOS-Kernel/include", "${MOTOR_CONTROL_SDK_PATH}/mcu_plus_sdk/source/kernel/freertos/FreeRTOS-Kernel/include",
"${MOTOR_CONTROL_SDK_PATH}/mcu_plus_sdk/source/kernel/freertos/portable/TI_ARM_CLANG/ARM_CR5F", "${MOTOR_CONTROL_SDK_PATH}/mcu_plus_sdk/source/kernel/freertos/portable/TI_ARM_CLANG/ARM_CR5F",
"${MOTOR_CONTROL_SDK_PATH}/mcu_plus_sdk/source/kernel/freertos/config/am243x/r5f", "${MOTOR_CONTROL_SDK_PATH}/mcu_plus_sdk/source/kernel/freertos/config/am243x/r5f",
"${MOTOR_CONTROL_SDK_PATH}/examples/position_sense/tamagawa_diagnostic",
], ],
}; };

View File

@ -5,6 +5,7 @@ let device = "am64x";
const files = { const files = {
common: [ common: [
"tamagawa_diagnostic.c", "tamagawa_diagnostic.c",
"tamagawa_periodic_trigger.c",
"main.c", "main.c",
], ],
}; };
@ -34,6 +35,7 @@ const includes_freertos_r5f = {
"${MOTOR_CONTROL_SDK_PATH}/mcu_plus_sdk/source/kernel/freertos/FreeRTOS-Kernel/include", "${MOTOR_CONTROL_SDK_PATH}/mcu_plus_sdk/source/kernel/freertos/FreeRTOS-Kernel/include",
"${MOTOR_CONTROL_SDK_PATH}/mcu_plus_sdk/source/kernel/freertos/portable/TI_ARM_CLANG/ARM_CR5F", "${MOTOR_CONTROL_SDK_PATH}/mcu_plus_sdk/source/kernel/freertos/portable/TI_ARM_CLANG/ARM_CR5F",
"${MOTOR_CONTROL_SDK_PATH}/mcu_plus_sdk/source/kernel/freertos/config/am64x/r5f", "${MOTOR_CONTROL_SDK_PATH}/mcu_plus_sdk/source/kernel/freertos/config/am64x/r5f",
"${MOTOR_CONTROL_SDK_PATH}/examples/position_sense/tamagawa_diagnostic",
], ],
}; };

View File

@ -64,6 +64,9 @@ const pruicss1 = pruicss.addInstance({}, false);
pruicss1.$name = "CONFIG_PRU_ICSS0"; pruicss1.$name = "CONFIG_PRU_ICSS0";
tamagawa1.pru = pruicss1; tamagawa1.pru = pruicss1;
pruicss1.AdditionalICSSSettings[0].$name = "CONFIG_PRU_ICSS_IO0"; pruicss1.AdditionalICSSSettings[0].$name = "CONFIG_PRU_ICSS_IO0";
pruicss1.intcMapping.create(1);
pruicss1.intcMapping[0].$name = "CONFIG_ICSS0_INTC_MAPPING0";
pruicss1.intcMapping[0].event = "18";
/** /**
* Pinmux solution for unlocked pins/peripherals. This ensures that minor changes to the automatic solver in a future * Pinmux solution for unlocked pins/peripherals. This ensures that minor changes to the automatic solver in a future

View File

@ -35,6 +35,7 @@
-I${MOTOR_CONTROL_SDK_PATH}/mcu_plus_sdk/source/kernel/freertos/FreeRTOS-Kernel/include -I${MOTOR_CONTROL_SDK_PATH}/mcu_plus_sdk/source/kernel/freertos/FreeRTOS-Kernel/include
-I${MOTOR_CONTROL_SDK_PATH}/mcu_plus_sdk/source/kernel/freertos/portable/TI_ARM_CLANG/ARM_CR5F -I${MOTOR_CONTROL_SDK_PATH}/mcu_plus_sdk/source/kernel/freertos/portable/TI_ARM_CLANG/ARM_CR5F
-I${MOTOR_CONTROL_SDK_PATH}/mcu_plus_sdk/source/kernel/freertos/config/am243x/r5f -I${MOTOR_CONTROL_SDK_PATH}/mcu_plus_sdk/source/kernel/freertos/config/am243x/r5f
-I${MOTOR_CONTROL_SDK_PATH}/examples/position_sense/tamagawa_diagnostic
-mcpu=cortex-r5 -mcpu=cortex-r5
-mfloat-abi=hard -mfloat-abi=hard
-mfpu=vfpv3-d16 -mfpu=vfpv3-d16
@ -97,6 +98,8 @@
<pathVariable name="MOTOR_CONTROL_SDK_PATH" path="${COM_TI_MOTOR_CONTROL_SDK_AMXXX_INSTALL_DIR}" scope="project" /> <pathVariable name="MOTOR_CONTROL_SDK_PATH" path="${COM_TI_MOTOR_CONTROL_SDK_AMXXX_INSTALL_DIR}" scope="project" />
<file path="../../../../tamagawa_diagnostic.c" openOnCreation="false" excludeFromBuild="false" action="copy"> <file path="../../../../tamagawa_diagnostic.c" openOnCreation="false" excludeFromBuild="false" action="copy">
</file> </file>
<file path="../../../../tamagawa_periodic_trigger.c" openOnCreation="false" excludeFromBuild="false" action="copy">
</file>
<file path="../main.c" openOnCreation="false" excludeFromBuild="false" action="copy"> <file path="../main.c" openOnCreation="false" excludeFromBuild="false" action="copy">
</file> </file>
<file path="linker.cmd" openOnCreation="false" excludeFromBuild="false" action="copy"> <file path="linker.cmd" openOnCreation="false" excludeFromBuild="false" action="copy">

View File

@ -39,6 +39,7 @@ endif
FILES_common := \ FILES_common := \
tamagawa_diagnostic.c \ tamagawa_diagnostic.c \
tamagawa_periodic_trigger.c \
main.c \ main.c \
ti_drivers_config.c \ ti_drivers_config.c \
ti_drivers_open_close.c \ ti_drivers_open_close.c \
@ -61,6 +62,7 @@ INCLUDES_common := \
-I${MOTOR_CONTROL_SDK_PATH}/mcu_plus_sdk/source/kernel/freertos/FreeRTOS-Kernel/include \ -I${MOTOR_CONTROL_SDK_PATH}/mcu_plus_sdk/source/kernel/freertos/FreeRTOS-Kernel/include \
-I${MOTOR_CONTROL_SDK_PATH}/mcu_plus_sdk/source/kernel/freertos/portable/TI_ARM_CLANG/ARM_CR5F \ -I${MOTOR_CONTROL_SDK_PATH}/mcu_plus_sdk/source/kernel/freertos/portable/TI_ARM_CLANG/ARM_CR5F \
-I${MOTOR_CONTROL_SDK_PATH}/mcu_plus_sdk/source/kernel/freertos/config/am243x/r5f \ -I${MOTOR_CONTROL_SDK_PATH}/mcu_plus_sdk/source/kernel/freertos/config/am243x/r5f \
-I${MOTOR_CONTROL_SDK_PATH}/examples/position_sense/tamagawa_diagnostic \
-Igenerated \ -Igenerated \
DEFINES_common := \ DEFINES_common := \

View File

@ -80,6 +80,10 @@ const pruicss1 = pruicss.addInstance({}, false);
pruicss1.$name = "CONFIG_PRU_ICSS0"; pruicss1.$name = "CONFIG_PRU_ICSS0";
tamagawa1.pru = pruicss1; tamagawa1.pru = pruicss1;
pruicss1.AdditionalICSSSettings[0].$name = "CONFIG_PRU_ICSS_IO0"; pruicss1.AdditionalICSSSettings[0].$name = "CONFIG_PRU_ICSS_IO0";
pruicss1.intcMapping.create(1);
pruicss1.intcMapping[0].$name = "CONFIG_ICSS0_INTC_MAPPING0";
pruicss1.intcMapping[0].event = "18";
/** /**
* Pinmux solution for unlocked pins/peripherals. This ensures that minor changes to the automatic solver in a future * Pinmux solution for unlocked pins/peripherals. This ensures that minor changes to the automatic solver in a future

View File

@ -35,6 +35,7 @@
-I${MOTOR_CONTROL_SDK_PATH}/mcu_plus_sdk/source/kernel/freertos/FreeRTOS-Kernel/include -I${MOTOR_CONTROL_SDK_PATH}/mcu_plus_sdk/source/kernel/freertos/FreeRTOS-Kernel/include
-I${MOTOR_CONTROL_SDK_PATH}/mcu_plus_sdk/source/kernel/freertos/portable/TI_ARM_CLANG/ARM_CR5F -I${MOTOR_CONTROL_SDK_PATH}/mcu_plus_sdk/source/kernel/freertos/portable/TI_ARM_CLANG/ARM_CR5F
-I${MOTOR_CONTROL_SDK_PATH}/mcu_plus_sdk/source/kernel/freertos/config/am243x/r5f -I${MOTOR_CONTROL_SDK_PATH}/mcu_plus_sdk/source/kernel/freertos/config/am243x/r5f
-I${MOTOR_CONTROL_SDK_PATH}/examples/position_sense/tamagawa_diagnostic
-mcpu=cortex-r5 -mcpu=cortex-r5
-mfloat-abi=hard -mfloat-abi=hard
-mfpu=vfpv3-d16 -mfpu=vfpv3-d16
@ -97,6 +98,8 @@
<pathVariable name="MOTOR_CONTROL_SDK_PATH" path="${COM_TI_MOTOR_CONTROL_SDK_AMXXX_INSTALL_DIR}" scope="project" /> <pathVariable name="MOTOR_CONTROL_SDK_PATH" path="${COM_TI_MOTOR_CONTROL_SDK_AMXXX_INSTALL_DIR}" scope="project" />
<file path="../../../../tamagawa_diagnostic.c" openOnCreation="false" excludeFromBuild="false" action="copy"> <file path="../../../../tamagawa_diagnostic.c" openOnCreation="false" excludeFromBuild="false" action="copy">
</file> </file>
<file path="../../../../tamagawa_periodic_trigger.c" openOnCreation="false" excludeFromBuild="false" action="copy">
</file>
<file path="../main.c" openOnCreation="false" excludeFromBuild="false" action="copy"> <file path="../main.c" openOnCreation="false" excludeFromBuild="false" action="copy">
</file> </file>
<file path="linker.cmd" openOnCreation="false" excludeFromBuild="false" action="copy"> <file path="linker.cmd" openOnCreation="false" excludeFromBuild="false" action="copy">

View File

@ -39,6 +39,7 @@ endif
FILES_common := \ FILES_common := \
tamagawa_diagnostic.c \ tamagawa_diagnostic.c \
tamagawa_periodic_trigger.c \
main.c \ main.c \
ti_drivers_config.c \ ti_drivers_config.c \
ti_drivers_open_close.c \ ti_drivers_open_close.c \
@ -61,6 +62,7 @@ INCLUDES_common := \
-I${MOTOR_CONTROL_SDK_PATH}/mcu_plus_sdk/source/kernel/freertos/FreeRTOS-Kernel/include \ -I${MOTOR_CONTROL_SDK_PATH}/mcu_plus_sdk/source/kernel/freertos/FreeRTOS-Kernel/include \
-I${MOTOR_CONTROL_SDK_PATH}/mcu_plus_sdk/source/kernel/freertos/portable/TI_ARM_CLANG/ARM_CR5F \ -I${MOTOR_CONTROL_SDK_PATH}/mcu_plus_sdk/source/kernel/freertos/portable/TI_ARM_CLANG/ARM_CR5F \
-I${MOTOR_CONTROL_SDK_PATH}/mcu_plus_sdk/source/kernel/freertos/config/am243x/r5f \ -I${MOTOR_CONTROL_SDK_PATH}/mcu_plus_sdk/source/kernel/freertos/config/am243x/r5f \
-I${MOTOR_CONTROL_SDK_PATH}/examples/position_sense/tamagawa_diagnostic \
-Igenerated \ -Igenerated \
DEFINES_common := \ DEFINES_common := \

View File

@ -64,6 +64,10 @@ const pruicss1 = pruicss.addInstance({}, false);
pruicss1.$name = "CONFIG_PRU_ICSS0"; pruicss1.$name = "CONFIG_PRU_ICSS0";
tamagawa1.pru = pruicss1; tamagawa1.pru = pruicss1;
pruicss1.AdditionalICSSSettings[0].$name = "CONFIG_PRU_ICSS_IO0"; pruicss1.AdditionalICSSSettings[0].$name = "CONFIG_PRU_ICSS_IO0";
pruicss1.intcMapping.create(1);
pruicss1.intcMapping[0].$name = "CONFIG_ICSS0_INTC_MAPPING0";
pruicss1.intcMapping[0].event = "18";
/** /**
* Pinmux solution for unlocked pins/peripherals. This ensures that minor changes to the automatic solver in a future * Pinmux solution for unlocked pins/peripherals. This ensures that minor changes to the automatic solver in a future

View File

@ -35,6 +35,7 @@
-I${MOTOR_CONTROL_SDK_PATH}/mcu_plus_sdk/source/kernel/freertos/FreeRTOS-Kernel/include -I${MOTOR_CONTROL_SDK_PATH}/mcu_plus_sdk/source/kernel/freertos/FreeRTOS-Kernel/include
-I${MOTOR_CONTROL_SDK_PATH}/mcu_plus_sdk/source/kernel/freertos/portable/TI_ARM_CLANG/ARM_CR5F -I${MOTOR_CONTROL_SDK_PATH}/mcu_plus_sdk/source/kernel/freertos/portable/TI_ARM_CLANG/ARM_CR5F
-I${MOTOR_CONTROL_SDK_PATH}/mcu_plus_sdk/source/kernel/freertos/config/am64x/r5f -I${MOTOR_CONTROL_SDK_PATH}/mcu_plus_sdk/source/kernel/freertos/config/am64x/r5f
-I${MOTOR_CONTROL_SDK_PATH}/examples/position_sense/tamagawa_diagnostic
-mcpu=cortex-r5 -mcpu=cortex-r5
-mfloat-abi=hard -mfloat-abi=hard
-mfpu=vfpv3-d16 -mfpu=vfpv3-d16
@ -97,6 +98,8 @@
<pathVariable name="MOTOR_CONTROL_SDK_PATH" path="${COM_TI_MOTOR_CONTROL_SDK_AMXXX_INSTALL_DIR}" scope="project" /> <pathVariable name="MOTOR_CONTROL_SDK_PATH" path="${COM_TI_MOTOR_CONTROL_SDK_AMXXX_INSTALL_DIR}" scope="project" />
<file path="../../../../tamagawa_diagnostic.c" openOnCreation="false" excludeFromBuild="false" action="copy"> <file path="../../../../tamagawa_diagnostic.c" openOnCreation="false" excludeFromBuild="false" action="copy">
</file> </file>
<file path="../../../../tamagawa_periodic_trigger.c" openOnCreation="false" excludeFromBuild="false" action="copy">
</file>
<file path="../main.c" openOnCreation="false" excludeFromBuild="false" action="copy"> <file path="../main.c" openOnCreation="false" excludeFromBuild="false" action="copy">
</file> </file>
<file path="linker.cmd" openOnCreation="false" excludeFromBuild="false" action="copy"> <file path="linker.cmd" openOnCreation="false" excludeFromBuild="false" action="copy">

View File

@ -39,6 +39,7 @@ endif
FILES_common := \ FILES_common := \
tamagawa_diagnostic.c \ tamagawa_diagnostic.c \
tamagawa_periodic_trigger.c \
main.c \ main.c \
ti_drivers_config.c \ ti_drivers_config.c \
ti_drivers_open_close.c \ ti_drivers_open_close.c \
@ -61,6 +62,7 @@ INCLUDES_common := \
-I${MOTOR_CONTROL_SDK_PATH}/mcu_plus_sdk/source/kernel/freertos/FreeRTOS-Kernel/include \ -I${MOTOR_CONTROL_SDK_PATH}/mcu_plus_sdk/source/kernel/freertos/FreeRTOS-Kernel/include \
-I${MOTOR_CONTROL_SDK_PATH}/mcu_plus_sdk/source/kernel/freertos/portable/TI_ARM_CLANG/ARM_CR5F \ -I${MOTOR_CONTROL_SDK_PATH}/mcu_plus_sdk/source/kernel/freertos/portable/TI_ARM_CLANG/ARM_CR5F \
-I${MOTOR_CONTROL_SDK_PATH}/mcu_plus_sdk/source/kernel/freertos/config/am64x/r5f \ -I${MOTOR_CONTROL_SDK_PATH}/mcu_plus_sdk/source/kernel/freertos/config/am64x/r5f \
-I${MOTOR_CONTROL_SDK_PATH}/examples/position_sense/tamagawa_diagnostic \
-Igenerated \ -Igenerated \
DEFINES_common := \ DEFINES_common := \

View File

@ -4,5 +4,5 @@
* View (ROV) tool. * View (ROV) tool.
*/ */
var crovFiles = [ var crovFiles = [
"mcu_plus_sdk/kernel/freertos/rov/FreeRTOS.rov.js", "mcu_plus_sdk/source/kernel/freertos/rov/FreeRTOS.rov.js",
]; ];

View File

@ -52,6 +52,17 @@
#include "ti_drivers_config.h" #include "ti_drivers_config.h"
#include "ti_board_open_close.h" #include "ti_board_open_close.h"
#include <position_sense/tamagawa/include/tamagawa_drv.h> #include <position_sense/tamagawa/include/tamagawa_drv.h>
#include "tamagawa_periodic_trigger.h"
#define TASK_STACK_SIZE (4096)
#define TASK_PRIORITY (6)
uint32_t gTaskFxnStack[TASK_STACK_SIZE/sizeof(uint32_t)] __attribute__((aligned(32)));
TaskP_Object gTaskObject;
#define TAMAGAWA_POSITION_LOOP_STOP 0
#define TAMAGAWA_POSITION_LOOP_START 1
#if ((CONFIG_TAMAGAWA0_CHANNEL0 + CONFIG_TAMAGAWA0_CHANNEL1 + CONFIG_TAMAGAWA0_CHANNEL2) == 1) #if ((CONFIG_TAMAGAWA0_CHANNEL0 + CONFIG_TAMAGAWA0_CHANNEL1 + CONFIG_TAMAGAWA0_CHANNEL2) == 1)
#include <position_sense/tamagawa/firmware/tamagawa_master_single_channel_bin.h> #include <position_sense/tamagawa/firmware/tamagawa_master_single_channel_bin.h>
#endif #endif
@ -188,6 +199,18 @@ static enum data_id tamagawa_get_command(uint8_t *adf, uint8_t *edf)
cmd = DATA_ID_0; cmd = DATA_ID_0;
DebugP_log("\r\n| WARNING: invalid Data ID, Data readout Data ID 0 will be sent\n"); DebugP_log("\r\n| WARNING: invalid Data ID, Data readout Data ID 0 will be sent\n");
} }
/* If the command is 9, start periodic trigger with DATA ID as 0*/
if(cmd == PERIODIC_TRIGGER_CMD)
{
DebugP_log("\r| Enter IEP cycle count: ");
if(DebugP_scanf("%u\n", &priv->cmp3) >= 0)
{
return cmd;
}else{
cmd = DATA_ID_0;
DebugP_log("\r\n| WARNING: invalid value entered, Data readout Data ID 0 will be sent with host trigger mode\n");
}
}
/* Check to make sure that the command issued is correct */ /* Check to make sure that the command issued is correct */
if(cmd >= DATA_ID_NUM) if(cmd >= DATA_ID_NUM)
{ {
@ -281,6 +304,7 @@ static void tamagawa_display_menu(void)
DebugP_log("\r\n| 6 : Reset (Data ID 8) |"); DebugP_log("\r\n| 6 : Reset (Data ID 8) |");
DebugP_log("\r\n| 7 : Reset (Data ID C) |"); DebugP_log("\r\n| 7 : Reset (Data ID C) |");
DebugP_log("\r\n| 8 : Readout from EEPROM (Data ID D) |"); DebugP_log("\r\n| 8 : Readout from EEPROM (Data ID D) |");
DebugP_log("\r\n| 9 : Start periodic continuous mode |");
DebugP_log("\r\n|------------------------------------------------------------------------------|\n|\n"); DebugP_log("\r\n|------------------------------------------------------------------------------|\n|\n");
DebugP_log("\r\n| enter value: "); DebugP_log("\r\n| enter value: ");
} }
@ -292,6 +316,119 @@ uint32_t tamagawa_get_fw_version(void)
return *((uint32_t *)TamagawaFirmware + 1); return *((uint32_t *)TamagawaFirmware + 1);
} }
static int32_t tamagawa_position_loop_status;
static void tamagawa_position_loop_decide_termination(void *args)
{
char c;
while(1)
{
DebugP_scanf("%c", &c);
tamagawa_position_loop_status = TAMAGAWA_POSITION_LOOP_STOP;
break;
}
TaskP_exit();
}
static int32_t tamagawa_loop_task_create(void)
{
uint32_t status;
TaskP_Params taskParams;
TaskP_Params_init(&taskParams);
taskParams.name = "tamagawa_position_loop_decide_termination";
taskParams.stackSize = TASK_STACK_SIZE;
taskParams.stack = (uint8_t *)gTaskFxnStack;
taskParams.priority = TASK_PRIORITY;
taskParams.taskMain = (TaskP_FxnMain)tamagawa_position_loop_decide_termination;
status = TaskP_construct(&gTaskObject, &taskParams);
if(status != SystemP_SUCCESS)
{
DebugP_log("\rTask2 creation failed\n");
}
return status ;
}
static void tamagawa_process_periodic_command(enum data_id process_dataid_cmd)
{
int32_t status;
tamagawa_config_periodic_trigger(priv);
if(tamagawa_loop_task_create() != SystemP_SUCCESS)
{
DebugP_log("\r| ERROR: OS not allowing continuous mode as related Task creation failed\r\n|\r\n|\n");
DebugP_log("Task_create() failed!\n");
return;
}
struct tamagawa_periodic_interface tamagawa_periodic_interface;
tamagawa_periodic_interface.pruss_cfg = priv->pruss_cfg;
tamagawa_periodic_interface.pruss_iep = priv->pruss_iep;
tamagawa_periodic_interface.pruss_dmem = priv->tamagawa_xchg;
tamagawa_periodic_interface.cmp3 = priv->cmp3;
status = tamagawa_config_periodic_mode(&tamagawa_periodic_interface, gPruIcssXHandle);
DebugP_assert(0 != status);
tamagawa_position_loop_status = TAMAGAWA_POSITION_LOOP_START;
DebugP_log("\r|\n\r| press enter to stop the continuous mode\r\n|\r\n| position, f1\r\n| ");
while(1)
{
if(tamagawa_position_loop_status == TAMAGAWA_POSITION_LOOP_STOP)
{
tamagawa_stop_periodic_continuous_mode(&tamagawa_periodic_interface);
tamagawa_config_host_trigger(priv);
return;
}
else
{
tamagawa_update_data_id(priv, process_dataid_cmd);
/* In case of EEPROM commands, calculate the CRC for the different channels selected */
if((process_dataid_cmd == DATA_ID_6) || (process_dataid_cmd == DATA_ID_D))
{
uint32_t ch = 0;
for(ch = 0 ; ch < MAX_CHANNELS ; ch++)
{
if(gTamagawa_multi_ch_mask & 1 << ch)
{
tamagawa_update_crc(priv, process_dataid_cmd, ch);
}
}
}
tamagawa_command_process(priv, process_dataid_cmd, gTamagawa_multi_ch_mask);
if(gTamagawa_is_multi_ch)
{
DebugP_log("\r\n Multi-channel mode is enabled\n\n");
uint32_t ch;
for(ch = 0; ch < MAX_CHANNELS; ch++)
{
if(gTamagawa_multi_ch_mask & 1 << ch)
{
tamagawa_multi_channel_set_cur(priv, ch);
DebugP_log("\r\n\r|\n|\t\t\t\tCHANNEL %d\n", ch);
tamagawa_handle_rx(priv, process_dataid_cmd);
}
}
}
else
{
DebugP_log("\r\n Single-channel mode is enabled\n\n");
tamagawa_handle_rx(priv, process_dataid_cmd);
}
}
}
}
void tamagawa_main(void *args) void tamagawa_main(void *args)
{ {
@ -310,12 +447,14 @@ void tamagawa_main(void *args)
#endif #endif
void *pruicss_cfg; void *pruicss_cfg;
void *pruicss_iep;
uint32_t slice_value = 1; uint32_t slice_value = 1;
uint32_t selected_ch; uint32_t selected_ch;
tamagawa_pruicss_init(); tamagawa_pruicss_init();
pruicss_cfg = (void *)(((PRUICSS_HwAttrs *)(gPruIcssXHandle->hwAttrs))->cfgRegBase); pruicss_cfg = (void *)(((PRUICSS_HwAttrs *)(gPruIcssXHandle->hwAttrs))->cfgRegBase);
pruicss_iep = (void *)(((PRUICSS_HwAttrs *)(gPruIcssXHandle->hwAttrs))->iep0RegBase);
if(PRUICSS_PRUx == 0) if(PRUICSS_PRUx == 0)
{ {
@ -323,9 +462,8 @@ void tamagawa_main(void *args)
} }
/* Initialize the priv structure according to the PRUx slice selected */ /* Initialize the priv structure according to the PRUx slice selected */
priv = tamagawa_init((struct tamagawa_xchg *)((PRUICSS_HwAttrs *)( priv = tamagawa_init((struct tamagawa_xchg *)(
gPruIcssXHandle->hwAttrs))->pru1DramBase, pruicss_cfg, slice_value); (PRUICSS_HwAttrs *)(gPruIcssXHandle->hwAttrs))->pru1DramBase, pruicss_cfg,pruicss_iep,slice_value);
tamagawa_set_baudrate(priv, CONFIG_TAMAGAWA0_BAUDRATE); tamagawa_set_baudrate(priv, CONFIG_TAMAGAWA0_BAUDRATE);
@ -393,6 +531,12 @@ void tamagawa_main(void *args)
tamagawa_display_menu(); tamagawa_display_menu();
cmd = tamagawa_get_command(&adf, &edf); cmd = tamagawa_get_command(&adf, &edf);
if(cmd == PERIODIC_TRIGGER_CMD)
{
/*Takes which data_id to process in input arguments*/
tamagawa_process_periodic_command(DATA_ID_0);
}
if(cmd >= DATA_ID_NUM) if(cmd >= DATA_ID_NUM)
{ {
continue; continue;
@ -436,8 +580,8 @@ void tamagawa_main(void *args)
DebugP_log("\r\n Single-channel mode is enabled\n\n"); DebugP_log("\r\n Single-channel mode is enabled\n\n");
tamagawa_handle_rx(priv, cmd); tamagawa_handle_rx(priv, cmd);
} }
}
}
Board_driversClose(); Board_driversClose();
Drivers_close(); Drivers_close();
} }

View File

@ -0,0 +1,189 @@
/*
* Copyright (C) 2023 Texas Instruments Incorporated
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
* are met:
*
* Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
*
* Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the
* distribution.
*
* Neither the name of Texas Instruments Incorporated nor the names of
* its contributors may be used to endorse or promote products derived
* from this software without specific prior written permission.
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
* A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
* OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
* LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
* DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
* THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
* OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
#include<stdio.h>
#include<stdint.h>
#include<math.h>
#include <drivers/pruicss.h>
#include <drivers/hw_include/hw_types.h>
#include <drivers/hw_include/tistdtypes.h>
#include <kernel/dpl/ClockP.h>
#include "tamagawa_periodic_trigger.h"
#include <drivers/soc.h>
#include <position_sense/tamagawa/include/tamagawa_drv.h>
static HwiP_Object gIcssgEncoderHwiObject0; /* ICSSG Tamagawa PRU FW HWI */
/* ICSSG Interrupt settings */
#define ICSSG_PRU_TAMAGAWA_INT_NUM ( CSLR_R5FSS0_CORE0_INTR_PRU_ICSSG0_PR1_HOST_INTR_PEND_0 )
uint32_t gPrutamagawaIrqCnt0;
/*global variable */
void *gPruss_iep;
PRUICSS_Handle gPruIcssXHandle;
/* ICSS INTC configuration */
extern PRUICSS_IntcInitData icss0_intc_initdata;
void tamagawa_config_iep(struct tamagawa_periodic_interface *tamagawa_periodic_interface)
{
/*reset iep timer*/
void *pruss_iep = tamagawa_periodic_interface->pruss_iep;
struct tamagawa_pruss_xchg *pruss_xchg = tamagawa_periodic_interface->pruss_dmem;
uint8_t temp;
uint8_t event;
uint32_t cmp_reg0;
uint32_t cmp_reg1;
uint32_t event_clear;
uint64_t cmp0 = 0;
/*clear IEP*/
temp = HW_RD_REG8((uint8_t*)pruss_iep + CSL_ICSS_G_PR1_IEP1_SLV_GLOBAL_CFG_REG );
temp &= 0xFE;
HW_WR_REG8((uint8_t*)pruss_iep + CSL_ICSS_G_PR1_IEP1_SLV_GLOBAL_CFG_REG, temp);
/* cmp cfg reg */
event = HW_RD_REG8((uint8_t*)pruss_iep + CSL_ICSS_G_PR1_IEP1_SLV_CMP_CFG_REG);
event_clear = HW_RD_REG8((uint8_t*)pruss_iep + CSL_ICSS_G_PR1_IEP1_SLV_CMP_STATUS_REG);
/*enable IEP reset by cmp0 event*/
event |= IEP_CMP0_ENABLE;
event |= IEP_RST_CNT_EN;
event_clear |= 1;
/*set IEP counter to ZERO*/
HW_WR_REG32((uint8_t*)pruss_iep + CSL_ICSS_G_PR1_IEP1_SLV_COUNT_REG0, 0);
HW_WR_REG32((uint8_t*)pruss_iep + CSL_ICSS_G_PR1_IEP1_SLV_COUNT_REG1, 0);
/*configure cmp3 registers*/
event |= (0x1 << 4 );
event_clear |= (0x1 << 3);
cmp_reg0 = (tamagawa_periodic_interface->cmp3 & 0xffffffff) - IEP_DEFAULT_INC;
cmp_reg1 = (tamagawa_periodic_interface->cmp3>>32 & 0xffffffff);
HW_WR_REG32((uint8_t*)pruss_iep + CSL_ICSS_G_PR1_IEP1_SLV_CMP3_REG0, cmp_reg0);
HW_WR_REG32((uint8_t*)pruss_iep + CSL_ICSS_G_PR1_IEP1_SLV_CMP3_REG1, cmp_reg1);
cmp0 = tamagawa_periodic_interface->cmp3;
/*clear event*/
HW_WR_REG8((uint8_t*)pruss_iep + CSL_ICSS_G_PR1_IEP1_SLV_CMP_STATUS_REG, event_clear);
/*enable event*/
HW_WR_REG8((uint8_t*)pruss_iep + CSL_ICSS_G_PR1_IEP1_SLV_CMP_CFG_REG, event);
/*configure cmp0 registers*/
cmp0 = 2*cmp0;
cmp_reg0 = (cmp0 & 0xffffffff) - IEP_DEFAULT_INC;
cmp_reg1 = (cmp0>>32 & 0xffffffff);
HW_WR_REG32((uint8_t*)pruss_iep + CSL_ICSS_G_PR1_IEP1_SLV_CMP0_REG0, cmp_reg0);
HW_WR_REG32((uint8_t*)pruss_iep + CSL_ICSS_G_PR1_IEP1_SLV_CMP0_REG1, cmp_reg1);
/*write IEP default increment & IEP start*/
temp = HW_RD_REG8((uint8_t*)pruss_iep + CSL_ICSS_G_PR1_IEP1_SLV_GLOBAL_CFG_REG );
temp &= 0x0F;
temp |= 0x10;
temp |= IEP_COUNTER_EN;
HW_WR_REG8((uint8_t*)pruss_iep + CSL_ICSS_G_PR1_IEP1_SLV_GLOBAL_CFG_REG, temp);
}
void tamagawa_interrupt_config(struct tamagawa_periodic_interface *tamagawa_periodic_interface)
{
struct tamagawa_pruss_xchg *pruss_xchg = tamagawa_periodic_interface->pruss_dmem;
int32_t status;
HwiP_Params hwiPrms;
/* Register & enable ICSSG tamagawa PRU FW interrupt */
HwiP_Params_init(&hwiPrms);
hwiPrms.intNum = ICSSG_PRU_TAMAGAWA_INT_NUM;
hwiPrms.callback = &prutamagawaIrqHandler0;
hwiPrms.args = 0;
hwiPrms.isPulse = FALSE;
hwiPrms.isFIQ = FALSE;
status = HwiP_construct(&gIcssgEncoderHwiObject0, &hwiPrms);
DebugP_assert(status == SystemP_SUCCESS);
}
uint32_t tamagawa_config_periodic_mode(struct tamagawa_periodic_interface *tamagawa_periodic_interface, PRUICSS_Handle handle)
{
int32_t status;
gPruIcssXHandle = handle;
gPruss_iep = tamagawa_periodic_interface->pruss_iep;
/*configure IEP*/
tamagawa_config_iep(tamagawa_periodic_interface);
/* Initialize ICSS INTC */
status = PRUICSS_intcInit(gPruIcssXHandle, &icss0_intc_initdata);
if (status != SystemP_SUCCESS)
{
return 0;
}
/*config Interrupt*/
tamagawa_interrupt_config(tamagawa_periodic_interface);
return 1;
}
void tamagawa_stop_periodic_continuous_mode(struct tamagawa_periodic_interface *tamagawa_periodic_interface)
{
/*reset iep timer*/
void *pruss_iep = tamagawa_periodic_interface->pruss_iep;
uint8_t temp;
/*clear IEP*/
temp = HW_RD_REG8((uint8_t*)pruss_iep + CSL_ICSS_G_PR1_IEP1_SLV_GLOBAL_CFG_REG );
temp &= 0xFE;
HW_WR_REG8((uint8_t*)pruss_iep + CSL_ICSS_G_PR1_IEP1_SLV_GLOBAL_CFG_REG, temp);
}
/* PRU tamagawa FW IRQ handler */
void prutamagawaIrqHandler0(void *args)
{
/* debug, inncrement PRU SDFM IRQ count */
gPrutamagawaIrqCnt0++;
/* clear Cmp3 event*/
uint32_t event_clear;
event_clear = HW_RD_REG8((uint8_t*)gPruss_iep + CSL_ICSS_G_PR1_IEP1_SLV_CMP_STATUS_REG);
event_clear |= IEP_CMP3_EVNT;
HW_WR_REG8((uint8_t*)gPruss_iep + CSL_ICSS_G_PR1_IEP1_SLV_CMP_STATUS_REG, event_clear);
/* Clear interrupt at source */
/* Write 18 to ICSSG_STATUS_CLR_INDEX_REG
Firmware: TRIGGER_HOST_SDFM_IRQ defined as 18
18 = 16+2, 2 is Host Interrupt Number. See AM64x TRM.
*/
PRUICSS_clearEvent(gPruIcssXHandle, PRU_TRIGGER_HOST_TAMAGAWA_EVT0);
}

View File

@ -0,0 +1,63 @@
/*
* Copyright (C) 2023 Texas Instruments Incorporated
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
* are met:
*
* Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
*
* Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the
* distribution.
*
* Neither the name of Texas Instruments Incorporated nor the names of
* its contributors may be used to endorse or promote products derived
* from this software without specific prior written permission.
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
* A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
* OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
* LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
* DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
* THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
* OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
#ifndef _TAMAGAWA_H_
#define _TAMAGAWA_H_
#include<stdint.h>
struct tamagawa_periodic_interface
{
void *pruss_iep;
void *pruss_dmem;
void *pruss_cfg;
uint64_t cmp3;
};
#define IEP_DEFAULT_INC 0x1;
#define IEP_DEFAULT_INC_EN 0x4;
#define IEP_COUNTER_EN 0x1;
#define IEP_RST_CNT_EN 0x1;
#define IEP_CMP0_ENABLE 0x1 << 1;
#define IEP_CMP3_EVNT (0x1 << 3 )
#define PRU_TRIGGER_HOST_TAMAGAWA_EVT0 ( 2+16 ) /* pr0_pru_mst_intr[2]_intr_req */
#define PERIOD
uint32_t tamagawa_config_periodic_mode(struct tamagawa_periodic_interface *tamagawa_periodic_interface, PRUICSS_Handle handle);
void tamagawa_stop_periodic_continuous_mode(struct tamagawa_periodic_interface *tamagawa_periodic_interface);
static void prutamagawaIrqHandler0(void *handle);
#endif /* _TAMAGAWA_H_ */

View File

@ -4,5 +4,5 @@
* View (ROV) tool. * View (ROV) tool.
*/ */
var crovFiles = [ var crovFiles = [
"mcu_plus_sdk/kernel/freertos/rov/FreeRTOS.rov.js", "mcu_plus_sdk/source/kernel/freertos/rov/FreeRTOS.rov.js",
]; ];

View File

@ -103,6 +103,7 @@ help:
@echo $(MAKE) -s -C source/position_sense/hdsl/firmware/multichannel_ch1_sync_mode/am243x-evm/icssg0-pru1_fw/ti-pru-cgt [all clean syscfg-gui syscfg] @echo $(MAKE) -s -C source/position_sense/hdsl/firmware/multichannel_ch1_sync_mode/am243x-evm/icssg0-pru1_fw/ti-pru-cgt [all clean syscfg-gui syscfg]
@echo $(MAKE) -s -C source/position_sense/hdsl/firmware/sync_225_mhz/am243x-evm/icssg0-pru1_fw/ti-pru-cgt [all clean syscfg-gui syscfg] @echo $(MAKE) -s -C source/position_sense/hdsl/firmware/sync_225_mhz/am243x-evm/icssg0-pru1_fw/ti-pru-cgt [all clean syscfg-gui syscfg]
@echo $(MAKE) -s -C source/position_sense/tamagawa/firmware/multi_channel/am243x-evm/icssg0-pru1_fw/ti-pru-cgt [all clean syscfg-gui syscfg] @echo $(MAKE) -s -C source/position_sense/tamagawa/firmware/multi_channel/am243x-evm/icssg0-pru1_fw/ti-pru-cgt [all clean syscfg-gui syscfg]
@echo $(MAKE) -s -C source/position_sense/tamagawa/firmware/multi_channel/am243x-lp/icssg0-pru1_fw/ti-pru-cgt [all clean syscfg-gui syscfg]
@echo $(MAKE) -s -C source/position_sense/tamagawa/firmware/single_channel/am243x-evm/icssg0-pru1_fw/ti-pru-cgt [all clean syscfg-gui syscfg] @echo $(MAKE) -s -C source/position_sense/tamagawa/firmware/single_channel/am243x-evm/icssg0-pru1_fw/ti-pru-cgt [all clean syscfg-gui syscfg]
@echo $(MAKE) -s -C source/position_sense/tamagawa/firmware/single_channel/am243x-lp/icssg0-pru1_fw/ti-pru-cgt [all clean syscfg-gui syscfg] @echo $(MAKE) -s -C source/position_sense/tamagawa/firmware/single_channel/am243x-lp/icssg0-pru1_fw/ti-pru-cgt [all clean syscfg-gui syscfg]
@echo $(MAKE) -s -C source/position_sense/bissc/firmware/single_channel/am243x-evm/icssg0-pru1_fw/ti-pru-cgt [all clean syscfg-gui syscfg] @echo $(MAKE) -s -C source/position_sense/bissc/firmware/single_channel/am243x-evm/icssg0-pru1_fw/ti-pru-cgt [all clean syscfg-gui syscfg]
@ -290,6 +291,7 @@ BUILD_COMBO_EXAMPLE_PRIVATE_ALL += hdsl_master_multichannel_ch0_sync_mode_am243x
BUILD_COMBO_EXAMPLE_PRIVATE_ALL += hdsl_master_multichannel_ch1_sync_mode_am243x-evm_icssg0-pru1_fw_ti-pru-cgt BUILD_COMBO_EXAMPLE_PRIVATE_ALL += hdsl_master_multichannel_ch1_sync_mode_am243x-evm_icssg0-pru1_fw_ti-pru-cgt
BUILD_COMBO_EXAMPLE_PRIVATE_ALL += hdsl_master_sync_225_mhz_am243x-evm_icssg0-pru1_fw_ti-pru-cgt BUILD_COMBO_EXAMPLE_PRIVATE_ALL += hdsl_master_sync_225_mhz_am243x-evm_icssg0-pru1_fw_ti-pru-cgt
BUILD_COMBO_EXAMPLE_PRIVATE_ALL += tamagawa_multi_channel_am243x-evm_icssg0-pru1_fw_ti-pru-cgt BUILD_COMBO_EXAMPLE_PRIVATE_ALL += tamagawa_multi_channel_am243x-evm_icssg0-pru1_fw_ti-pru-cgt
BUILD_COMBO_EXAMPLE_PRIVATE_ALL += tamagawa_multi_channel_am243x-lp_icssg0-pru1_fw_ti-pru-cgt
BUILD_COMBO_EXAMPLE_PRIVATE_ALL += tamagawa_single_channel_am243x-evm_icssg0-pru1_fw_ti-pru-cgt BUILD_COMBO_EXAMPLE_PRIVATE_ALL += tamagawa_single_channel_am243x-evm_icssg0-pru1_fw_ti-pru-cgt
BUILD_COMBO_EXAMPLE_PRIVATE_ALL += tamagawa_single_channel_am243x-lp_icssg0-pru1_fw_ti-pru-cgt BUILD_COMBO_EXAMPLE_PRIVATE_ALL += tamagawa_single_channel_am243x-lp_icssg0-pru1_fw_ti-pru-cgt
BUILD_COMBO_EXAMPLE_PRIVATE_ALL += bissc_peripheral_interface_single_ch_am243x-evm_icssg0-pru1_fw_ti-pru-cgt BUILD_COMBO_EXAMPLE_PRIVATE_ALL += bissc_peripheral_interface_single_ch_am243x-evm_icssg0-pru1_fw_ti-pru-cgt
@ -462,6 +464,9 @@ examples-private: $(BUILD_COMBO_EXAMPLE_PRIVATE_ALL)
tamagawa_multi_channel_am243x-evm_icssg0-pru1_fw_ti-pru-cgt: tamagawa_multi_channel_am243x-evm_icssg0-pru1_fw_ti-pru-cgt:
$(MAKE) -C source/position_sense/tamagawa/firmware/multi_channel/am243x-evm/icssg0-pru1_fw/ti-pru-cgt -f makefile all $(MAKE) -C source/position_sense/tamagawa/firmware/multi_channel/am243x-evm/icssg0-pru1_fw/ti-pru-cgt -f makefile all
tamagawa_multi_channel_am243x-lp_icssg0-pru1_fw_ti-pru-cgt:
$(MAKE) -C source/position_sense/tamagawa/firmware/multi_channel/am243x-lp/icssg0-pru1_fw/ti-pru-cgt -f makefile all
tamagawa_single_channel_am243x-evm_icssg0-pru1_fw_ti-pru-cgt: tamagawa_single_channel_am243x-evm_icssg0-pru1_fw_ti-pru-cgt:
$(MAKE) -C source/position_sense/tamagawa/firmware/single_channel/am243x-evm/icssg0-pru1_fw/ti-pru-cgt -f makefile all $(MAKE) -C source/position_sense/tamagawa/firmware/single_channel/am243x-evm/icssg0-pru1_fw/ti-pru-cgt -f makefile all
@ -543,6 +548,7 @@ BUILD_COMBO_EXAMPLE_PRIVATE_CLEAN_ALL += hdsl_master_multichannel_ch0_sync_mode_
BUILD_COMBO_EXAMPLE_PRIVATE_CLEAN_ALL += hdsl_master_multichannel_ch1_sync_mode_am243x-evm_icssg0-pru1_fw_ti-pru-cgt_clean BUILD_COMBO_EXAMPLE_PRIVATE_CLEAN_ALL += hdsl_master_multichannel_ch1_sync_mode_am243x-evm_icssg0-pru1_fw_ti-pru-cgt_clean
BUILD_COMBO_EXAMPLE_PRIVATE_CLEAN_ALL += hdsl_master_sync_225_mhz_am243x-evm_icssg0-pru1_fw_ti-pru-cgt_clean BUILD_COMBO_EXAMPLE_PRIVATE_CLEAN_ALL += hdsl_master_sync_225_mhz_am243x-evm_icssg0-pru1_fw_ti-pru-cgt_clean
BUILD_COMBO_EXAMPLE_PRIVATE_CLEAN_ALL += tamagawa_multi_channel_am243x-evm_icssg0-pru1_fw_ti-pru-cgt_clean BUILD_COMBO_EXAMPLE_PRIVATE_CLEAN_ALL += tamagawa_multi_channel_am243x-evm_icssg0-pru1_fw_ti-pru-cgt_clean
BUILD_COMBO_EXAMPLE_PRIVATE_CLEAN_ALL += tamagawa_multi_channel_am243x-lp_icssg0-pru1_fw_ti-pru-cgt_clean
BUILD_COMBO_EXAMPLE_PRIVATE_CLEAN_ALL += tamagawa_single_channel_am243x-evm_icssg0-pru1_fw_ti-pru-cgt_clean BUILD_COMBO_EXAMPLE_PRIVATE_CLEAN_ALL += tamagawa_single_channel_am243x-evm_icssg0-pru1_fw_ti-pru-cgt_clean
BUILD_COMBO_EXAMPLE_PRIVATE_CLEAN_ALL += tamagawa_single_channel_am243x-lp_icssg0-pru1_fw_ti-pru-cgt_clean BUILD_COMBO_EXAMPLE_PRIVATE_CLEAN_ALL += tamagawa_single_channel_am243x-lp_icssg0-pru1_fw_ti-pru-cgt_clean
BUILD_COMBO_EXAMPLE_PRIVATE_CLEAN_ALL += bissc_peripheral_interface_single_ch_am243x-evm_icssg0-pru1_fw_ti-pru-cgt_clean BUILD_COMBO_EXAMPLE_PRIVATE_CLEAN_ALL += bissc_peripheral_interface_single_ch_am243x-evm_icssg0-pru1_fw_ti-pru-cgt_clean
@ -715,6 +721,9 @@ examples-private-clean: $(BUILD_COMBO_EXAMPLE_PRIVATE_CLEAN_ALL)
tamagawa_multi_channel_am243x-evm_icssg0-pru1_fw_ti-pru-cgt_clean: tamagawa_multi_channel_am243x-evm_icssg0-pru1_fw_ti-pru-cgt_clean:
$(MAKE) -C source/position_sense/tamagawa/firmware/multi_channel/am243x-evm/icssg0-pru1_fw/ti-pru-cgt -f makefile clean $(MAKE) -C source/position_sense/tamagawa/firmware/multi_channel/am243x-evm/icssg0-pru1_fw/ti-pru-cgt -f makefile clean
tamagawa_multi_channel_am243x-lp_icssg0-pru1_fw_ti-pru-cgt_clean:
$(MAKE) -C source/position_sense/tamagawa/firmware/multi_channel/am243x-lp/icssg0-pru1_fw/ti-pru-cgt -f makefile clean
tamagawa_single_channel_am243x-evm_icssg0-pru1_fw_ti-pru-cgt_clean: tamagawa_single_channel_am243x-evm_icssg0-pru1_fw_ti-pru-cgt_clean:
$(MAKE) -C source/position_sense/tamagawa/firmware/single_channel/am243x-evm/icssg0-pru1_fw/ti-pru-cgt -f makefile clean $(MAKE) -C source/position_sense/tamagawa/firmware/single_channel/am243x-evm/icssg0-pru1_fw/ti-pru-cgt -f makefile clean
@ -796,6 +805,7 @@ BUILD_COMBO_EXAMPLE_PRIVATE_SCRUB_ALL += hdsl_master_multichannel_ch0_sync_mode_
BUILD_COMBO_EXAMPLE_PRIVATE_SCRUB_ALL += hdsl_master_multichannel_ch1_sync_mode_am243x-evm_icssg0-pru1_fw_ti-pru-cgt_scrub BUILD_COMBO_EXAMPLE_PRIVATE_SCRUB_ALL += hdsl_master_multichannel_ch1_sync_mode_am243x-evm_icssg0-pru1_fw_ti-pru-cgt_scrub
BUILD_COMBO_EXAMPLE_PRIVATE_SCRUB_ALL += hdsl_master_sync_225_mhz_am243x-evm_icssg0-pru1_fw_ti-pru-cgt_scrub BUILD_COMBO_EXAMPLE_PRIVATE_SCRUB_ALL += hdsl_master_sync_225_mhz_am243x-evm_icssg0-pru1_fw_ti-pru-cgt_scrub
BUILD_COMBO_EXAMPLE_PRIVATE_SCRUB_ALL += tamagawa_multi_channel_am243x-evm_icssg0-pru1_fw_ti-pru-cgt_scrub BUILD_COMBO_EXAMPLE_PRIVATE_SCRUB_ALL += tamagawa_multi_channel_am243x-evm_icssg0-pru1_fw_ti-pru-cgt_scrub
BUILD_COMBO_EXAMPLE_PRIVATE_SCRUB_ALL += tamagawa_multi_channel_am243x-lp_icssg0-pru1_fw_ti-pru-cgt_scrub
BUILD_COMBO_EXAMPLE_PRIVATE_SCRUB_ALL += tamagawa_single_channel_am243x-evm_icssg0-pru1_fw_ti-pru-cgt_scrub BUILD_COMBO_EXAMPLE_PRIVATE_SCRUB_ALL += tamagawa_single_channel_am243x-evm_icssg0-pru1_fw_ti-pru-cgt_scrub
BUILD_COMBO_EXAMPLE_PRIVATE_SCRUB_ALL += tamagawa_single_channel_am243x-lp_icssg0-pru1_fw_ti-pru-cgt_scrub BUILD_COMBO_EXAMPLE_PRIVATE_SCRUB_ALL += tamagawa_single_channel_am243x-lp_icssg0-pru1_fw_ti-pru-cgt_scrub
BUILD_COMBO_EXAMPLE_PRIVATE_SCRUB_ALL += bissc_peripheral_interface_single_ch_am243x-evm_icssg0-pru1_fw_ti-pru-cgt_scrub BUILD_COMBO_EXAMPLE_PRIVATE_SCRUB_ALL += bissc_peripheral_interface_single_ch_am243x-evm_icssg0-pru1_fw_ti-pru-cgt_scrub
@ -968,6 +978,9 @@ examples-scrub-private: $(BUILD_COMBO_EXAMPLE_PRIVATE_SCRUB_ALL)
tamagawa_multi_channel_am243x-evm_icssg0-pru1_fw_ti-pru-cgt_scrub: tamagawa_multi_channel_am243x-evm_icssg0-pru1_fw_ti-pru-cgt_scrub:
$(MAKE) -C source/position_sense/tamagawa/firmware/multi_channel/am243x-evm/icssg0-pru1_fw/ti-pru-cgt -f makefile scrub $(MAKE) -C source/position_sense/tamagawa/firmware/multi_channel/am243x-evm/icssg0-pru1_fw/ti-pru-cgt -f makefile scrub
tamagawa_multi_channel_am243x-lp_icssg0-pru1_fw_ti-pru-cgt_scrub:
$(MAKE) -C source/position_sense/tamagawa/firmware/multi_channel/am243x-lp/icssg0-pru1_fw/ti-pru-cgt -f makefile scrub
tamagawa_single_channel_am243x-evm_icssg0-pru1_fw_ti-pru-cgt_scrub: tamagawa_single_channel_am243x-evm_icssg0-pru1_fw_ti-pru-cgt_scrub:
$(MAKE) -C source/position_sense/tamagawa/firmware/single_channel/am243x-evm/icssg0-pru1_fw/ti-pru-cgt -f makefile scrub $(MAKE) -C source/position_sense/tamagawa/firmware/single_channel/am243x-evm/icssg0-pru1_fw/ti-pru-cgt -f makefile scrub

View File

@ -64,6 +64,7 @@ BUILD_COMBO_EXAMPLE_PROJECTSPEC_BUILD_PRIVATE_ALL += hdsl_master_multichannel_ch
BUILD_COMBO_EXAMPLE_PROJECTSPEC_BUILD_PRIVATE_ALL += hdsl_master_multichannel_ch1_sync_mode_am243x-evm_icssg0-pru1_fw_ti-pru-cgt_build BUILD_COMBO_EXAMPLE_PROJECTSPEC_BUILD_PRIVATE_ALL += hdsl_master_multichannel_ch1_sync_mode_am243x-evm_icssg0-pru1_fw_ti-pru-cgt_build
BUILD_COMBO_EXAMPLE_PROJECTSPEC_BUILD_PRIVATE_ALL += hdsl_master_sync_225_mhz_am243x-evm_icssg0-pru1_fw_ti-pru-cgt_build BUILD_COMBO_EXAMPLE_PROJECTSPEC_BUILD_PRIVATE_ALL += hdsl_master_sync_225_mhz_am243x-evm_icssg0-pru1_fw_ti-pru-cgt_build
BUILD_COMBO_EXAMPLE_PROJECTSPEC_BUILD_PRIVATE_ALL += tamagawa_multi_channel_am243x-evm_icssg0-pru1_fw_ti-pru-cgt_build BUILD_COMBO_EXAMPLE_PROJECTSPEC_BUILD_PRIVATE_ALL += tamagawa_multi_channel_am243x-evm_icssg0-pru1_fw_ti-pru-cgt_build
BUILD_COMBO_EXAMPLE_PROJECTSPEC_BUILD_PRIVATE_ALL += tamagawa_multi_channel_am243x-lp_icssg0-pru1_fw_ti-pru-cgt_build
BUILD_COMBO_EXAMPLE_PROJECTSPEC_BUILD_PRIVATE_ALL += tamagawa_single_channel_am243x-evm_icssg0-pru1_fw_ti-pru-cgt_build BUILD_COMBO_EXAMPLE_PROJECTSPEC_BUILD_PRIVATE_ALL += tamagawa_single_channel_am243x-evm_icssg0-pru1_fw_ti-pru-cgt_build
BUILD_COMBO_EXAMPLE_PROJECTSPEC_BUILD_PRIVATE_ALL += tamagawa_single_channel_am243x-lp_icssg0-pru1_fw_ti-pru-cgt_build BUILD_COMBO_EXAMPLE_PROJECTSPEC_BUILD_PRIVATE_ALL += tamagawa_single_channel_am243x-lp_icssg0-pru1_fw_ti-pru-cgt_build
BUILD_COMBO_EXAMPLE_PROJECTSPEC_BUILD_PRIVATE_ALL += bissc_peripheral_interface_single_ch_am243x-evm_icssg0-pru1_fw_ti-pru-cgt_build BUILD_COMBO_EXAMPLE_PROJECTSPEC_BUILD_PRIVATE_ALL += bissc_peripheral_interface_single_ch_am243x-evm_icssg0-pru1_fw_ti-pru-cgt_build
@ -236,6 +237,9 @@ all-private: $(BUILD_COMBO_EXAMPLE_PROJECTSPEC_BUILD_PRIVATE_ALL)
tamagawa_multi_channel_am243x-evm_icssg0-pru1_fw_ti-pru-cgt_build: tamagawa_multi_channel_am243x-evm_icssg0-pru1_fw_ti-pru-cgt_build:
$(MAKE) -C source/position_sense/tamagawa/firmware/multi_channel/am243x-evm/icssg0-pru1_fw/ti-pru-cgt -f makefile_projectspec all $(MAKE) -C source/position_sense/tamagawa/firmware/multi_channel/am243x-evm/icssg0-pru1_fw/ti-pru-cgt -f makefile_projectspec all
tamagawa_multi_channel_am243x-lp_icssg0-pru1_fw_ti-pru-cgt_build:
$(MAKE) -C source/position_sense/tamagawa/firmware/multi_channel/am243x-lp/icssg0-pru1_fw/ti-pru-cgt -f makefile_projectspec all
tamagawa_single_channel_am243x-evm_icssg0-pru1_fw_ti-pru-cgt_build: tamagawa_single_channel_am243x-evm_icssg0-pru1_fw_ti-pru-cgt_build:
$(MAKE) -C source/position_sense/tamagawa/firmware/single_channel/am243x-evm/icssg0-pru1_fw/ti-pru-cgt -f makefile_projectspec all $(MAKE) -C source/position_sense/tamagawa/firmware/single_channel/am243x-evm/icssg0-pru1_fw/ti-pru-cgt -f makefile_projectspec all
@ -318,6 +322,7 @@ BUILD_COMBO_EXAMPLE_PROJECTSPEC_CLEAN_PRIVATE_ALL += hdsl_master_multichannel_ch
BUILD_COMBO_EXAMPLE_PROJECTSPEC_CLEAN_PRIVATE_ALL += hdsl_master_multichannel_ch1_sync_mode_am243x-evm_icssg0-pru1_fw_ti-pru-cgt_clean BUILD_COMBO_EXAMPLE_PROJECTSPEC_CLEAN_PRIVATE_ALL += hdsl_master_multichannel_ch1_sync_mode_am243x-evm_icssg0-pru1_fw_ti-pru-cgt_clean
BUILD_COMBO_EXAMPLE_PROJECTSPEC_CLEAN_PRIVATE_ALL += hdsl_master_sync_225_mhz_am243x-evm_icssg0-pru1_fw_ti-pru-cgt_clean BUILD_COMBO_EXAMPLE_PROJECTSPEC_CLEAN_PRIVATE_ALL += hdsl_master_sync_225_mhz_am243x-evm_icssg0-pru1_fw_ti-pru-cgt_clean
BUILD_COMBO_EXAMPLE_PROJECTSPEC_CLEAN_PRIVATE_ALL += tamagawa_multi_channel_am243x-evm_icssg0-pru1_fw_ti-pru-cgt_clean BUILD_COMBO_EXAMPLE_PROJECTSPEC_CLEAN_PRIVATE_ALL += tamagawa_multi_channel_am243x-evm_icssg0-pru1_fw_ti-pru-cgt_clean
BUILD_COMBO_EXAMPLE_PROJECTSPEC_CLEAN_PRIVATE_ALL += tamagawa_multi_channel_am243x-lp_icssg0-pru1_fw_ti-pru-cgt_clean
BUILD_COMBO_EXAMPLE_PROJECTSPEC_CLEAN_PRIVATE_ALL += tamagawa_single_channel_am243x-evm_icssg0-pru1_fw_ti-pru-cgt_clean BUILD_COMBO_EXAMPLE_PROJECTSPEC_CLEAN_PRIVATE_ALL += tamagawa_single_channel_am243x-evm_icssg0-pru1_fw_ti-pru-cgt_clean
BUILD_COMBO_EXAMPLE_PROJECTSPEC_CLEAN_PRIVATE_ALL += tamagawa_single_channel_am243x-lp_icssg0-pru1_fw_ti-pru-cgt_clean BUILD_COMBO_EXAMPLE_PROJECTSPEC_CLEAN_PRIVATE_ALL += tamagawa_single_channel_am243x-lp_icssg0-pru1_fw_ti-pru-cgt_clean
BUILD_COMBO_EXAMPLE_PROJECTSPEC_CLEAN_PRIVATE_ALL += bissc_peripheral_interface_single_ch_am243x-evm_icssg0-pru1_fw_ti-pru-cgt_clean BUILD_COMBO_EXAMPLE_PROJECTSPEC_CLEAN_PRIVATE_ALL += bissc_peripheral_interface_single_ch_am243x-evm_icssg0-pru1_fw_ti-pru-cgt_clean
@ -490,6 +495,9 @@ clean-private: $(BUILD_COMBO_EXAMPLE_PROJECTSPEC_CLEAN_PRIVATE_ALL)
tamagawa_multi_channel_am243x-evm_icssg0-pru1_fw_ti-pru-cgt_clean: tamagawa_multi_channel_am243x-evm_icssg0-pru1_fw_ti-pru-cgt_clean:
$(MAKE) -C source/position_sense/tamagawa/firmware/multi_channel/am243x-evm/icssg0-pru1_fw/ti-pru-cgt -f makefile_projectspec clean $(MAKE) -C source/position_sense/tamagawa/firmware/multi_channel/am243x-evm/icssg0-pru1_fw/ti-pru-cgt -f makefile_projectspec clean
tamagawa_multi_channel_am243x-lp_icssg0-pru1_fw_ti-pru-cgt_clean:
$(MAKE) -C source/position_sense/tamagawa/firmware/multi_channel/am243x-lp/icssg0-pru1_fw/ti-pru-cgt -f makefile_projectspec clean
tamagawa_single_channel_am243x-evm_icssg0-pru1_fw_ti-pru-cgt_clean: tamagawa_single_channel_am243x-evm_icssg0-pru1_fw_ti-pru-cgt_clean:
$(MAKE) -C source/position_sense/tamagawa/firmware/single_channel/am243x-evm/icssg0-pru1_fw/ti-pru-cgt -f makefile_projectspec clean $(MAKE) -C source/position_sense/tamagawa/firmware/single_channel/am243x-evm/icssg0-pru1_fw/ti-pru-cgt -f makefile_projectspec clean
@ -572,6 +580,7 @@ BUILD_COMBO_EXAMPLE_PROJECTSPEC_EXPORT_PRIVATE_ALL += hdsl_master_multichannel_c
BUILD_COMBO_EXAMPLE_PROJECTSPEC_EXPORT_PRIVATE_ALL += hdsl_master_multichannel_ch1_sync_mode_am243x-evm_icssg0-pru1_fw_ti-pru-cgt_export BUILD_COMBO_EXAMPLE_PROJECTSPEC_EXPORT_PRIVATE_ALL += hdsl_master_multichannel_ch1_sync_mode_am243x-evm_icssg0-pru1_fw_ti-pru-cgt_export
BUILD_COMBO_EXAMPLE_PROJECTSPEC_EXPORT_PRIVATE_ALL += hdsl_master_sync_225_mhz_am243x-evm_icssg0-pru1_fw_ti-pru-cgt_export BUILD_COMBO_EXAMPLE_PROJECTSPEC_EXPORT_PRIVATE_ALL += hdsl_master_sync_225_mhz_am243x-evm_icssg0-pru1_fw_ti-pru-cgt_export
BUILD_COMBO_EXAMPLE_PROJECTSPEC_EXPORT_PRIVATE_ALL += tamagawa_multi_channel_am243x-evm_icssg0-pru1_fw_ti-pru-cgt_export BUILD_COMBO_EXAMPLE_PROJECTSPEC_EXPORT_PRIVATE_ALL += tamagawa_multi_channel_am243x-evm_icssg0-pru1_fw_ti-pru-cgt_export
BUILD_COMBO_EXAMPLE_PROJECTSPEC_EXPORT_PRIVATE_ALL += tamagawa_multi_channel_am243x-lp_icssg0-pru1_fw_ti-pru-cgt_export
BUILD_COMBO_EXAMPLE_PROJECTSPEC_EXPORT_PRIVATE_ALL += tamagawa_single_channel_am243x-evm_icssg0-pru1_fw_ti-pru-cgt_export BUILD_COMBO_EXAMPLE_PROJECTSPEC_EXPORT_PRIVATE_ALL += tamagawa_single_channel_am243x-evm_icssg0-pru1_fw_ti-pru-cgt_export
BUILD_COMBO_EXAMPLE_PROJECTSPEC_EXPORT_PRIVATE_ALL += tamagawa_single_channel_am243x-lp_icssg0-pru1_fw_ti-pru-cgt_export BUILD_COMBO_EXAMPLE_PROJECTSPEC_EXPORT_PRIVATE_ALL += tamagawa_single_channel_am243x-lp_icssg0-pru1_fw_ti-pru-cgt_export
BUILD_COMBO_EXAMPLE_PROJECTSPEC_EXPORT_PRIVATE_ALL += bissc_peripheral_interface_single_ch_am243x-evm_icssg0-pru1_fw_ti-pru-cgt_export BUILD_COMBO_EXAMPLE_PROJECTSPEC_EXPORT_PRIVATE_ALL += bissc_peripheral_interface_single_ch_am243x-evm_icssg0-pru1_fw_ti-pru-cgt_export
@ -744,6 +753,9 @@ export-private: $(BUILD_COMBO_EXAMPLE_PROJECTSPEC_EXPORT_PRIVATE_ALL)
tamagawa_multi_channel_am243x-evm_icssg0-pru1_fw_ti-pru-cgt_export: tamagawa_multi_channel_am243x-evm_icssg0-pru1_fw_ti-pru-cgt_export:
$(MAKE) -C source/position_sense/tamagawa/firmware/multi_channel/am243x-evm/icssg0-pru1_fw/ti-pru-cgt -f makefile_projectspec export $(MAKE) -C source/position_sense/tamagawa/firmware/multi_channel/am243x-evm/icssg0-pru1_fw/ti-pru-cgt -f makefile_projectspec export
tamagawa_multi_channel_am243x-lp_icssg0-pru1_fw_ti-pru-cgt_export:
$(MAKE) -C source/position_sense/tamagawa/firmware/multi_channel/am243x-lp/icssg0-pru1_fw/ti-pru-cgt -f makefile_projectspec export
tamagawa_single_channel_am243x-evm_icssg0-pru1_fw_ti-pru-cgt_export: tamagawa_single_channel_am243x-evm_icssg0-pru1_fw_ti-pru-cgt_export:
$(MAKE) -C source/position_sense/tamagawa/firmware/single_channel/am243x-evm/icssg0-pru1_fw/ti-pru-cgt -f makefile_projectspec export $(MAKE) -C source/position_sense/tamagawa/firmware/single_channel/am243x-evm/icssg0-pru1_fw/ti-pru-cgt -f makefile_projectspec export
@ -847,6 +859,7 @@ help:
@echo $(MAKE) -s -C source/position_sense/hdsl/firmware/multichannel_ch1_sync_mode/am243x-evm/icssg0-pru1_fw/ti-pru-cgt -f makefile_projectspec [export all clean] @echo $(MAKE) -s -C source/position_sense/hdsl/firmware/multichannel_ch1_sync_mode/am243x-evm/icssg0-pru1_fw/ti-pru-cgt -f makefile_projectspec [export all clean]
@echo $(MAKE) -s -C source/position_sense/hdsl/firmware/sync_225_mhz/am243x-evm/icssg0-pru1_fw/ti-pru-cgt -f makefile_projectspec [export all clean] @echo $(MAKE) -s -C source/position_sense/hdsl/firmware/sync_225_mhz/am243x-evm/icssg0-pru1_fw/ti-pru-cgt -f makefile_projectspec [export all clean]
@echo $(MAKE) -s -C source/position_sense/tamagawa/firmware/multi_channel/am243x-evm/icssg0-pru1_fw/ti-pru-cgt -f makefile_projectspec [export all clean] @echo $(MAKE) -s -C source/position_sense/tamagawa/firmware/multi_channel/am243x-evm/icssg0-pru1_fw/ti-pru-cgt -f makefile_projectspec [export all clean]
@echo $(MAKE) -s -C source/position_sense/tamagawa/firmware/multi_channel/am243x-lp/icssg0-pru1_fw/ti-pru-cgt -f makefile_projectspec [export all clean]
@echo $(MAKE) -s -C source/position_sense/tamagawa/firmware/single_channel/am243x-evm/icssg0-pru1_fw/ti-pru-cgt -f makefile_projectspec [export all clean] @echo $(MAKE) -s -C source/position_sense/tamagawa/firmware/single_channel/am243x-evm/icssg0-pru1_fw/ti-pru-cgt -f makefile_projectspec [export all clean]
@echo $(MAKE) -s -C source/position_sense/tamagawa/firmware/single_channel/am243x-lp/icssg0-pru1_fw/ti-pru-cgt -f makefile_projectspec [export all clean] @echo $(MAKE) -s -C source/position_sense/tamagawa/firmware/single_channel/am243x-lp/icssg0-pru1_fw/ti-pru-cgt -f makefile_projectspec [export all clean]
@echo $(MAKE) -s -C source/position_sense/bissc/firmware/single_channel/am243x-evm/icssg0-pru1_fw/ti-pru-cgt -f makefile_projectspec [export all clean] @echo $(MAKE) -s -C source/position_sense/bissc/firmware/single_channel/am243x-evm/icssg0-pru1_fw/ti-pru-cgt -f makefile_projectspec [export all clean]

View File

@ -583,12 +583,13 @@ static inline void tamagawa_config_clr_cfg0(struct tamagawa_priv *priv)
HW_WR_REG32((uint32_t)(pruss_cfg) + tamagawa_priv.register_offset_val.ICSS_CFG_PRUx_ED_CH2_CFG0, 0); HW_WR_REG32((uint32_t)(pruss_cfg) + tamagawa_priv.register_offset_val.ICSS_CFG_PRUx_ED_CH2_CFG0, 0);
} }
struct tamagawa_priv *tamagawa_init(struct tamagawa_xchg *tamagawa_xchg, void *pruss_cfg, uint32_t slice_value) struct tamagawa_priv *tamagawa_init(struct tamagawa_xchg *tamagawa_xchg, void *pruss_cfg, void *pruss_iep, uint32_t slice_value)
{ {
/* Initializes tamagawa firmware interface address and get the pointer to struct tamagawa_priv instance */ /* Initializes tamagawa firmware interface address and get the pointer to struct tamagawa_priv instance */
tamagawa_priv.tamagawa_xchg = tamagawa_xchg; tamagawa_priv.tamagawa_xchg = tamagawa_xchg;
tamagawa_priv.pruss_cfg = pruss_cfg; tamagawa_priv.pruss_cfg = pruss_cfg;
tamagawa_priv.slice_value = slice_value; tamagawa_priv.slice_value = slice_value;
tamagawa_priv.pruss_iep = pruss_iep;
/* If the slice value is 0, it denotes that PRU0 is selected. Assign the register offsets for PRU0 */ /* If the slice value is 0, it denotes that PRU0 is selected. Assign the register offsets for PRU0 */
if(slice_value==0) if(slice_value==0)

View File

@ -47,12 +47,17 @@ const lflags = {
const buildOptionCombos = [ const buildOptionCombos = [
{ device: device, cpu: "icssg0-pru1", cgt: "ti-pru-cgt", board: "am243x-evm", os: "fw"}, { device: device, cpu: "icssg0-pru1", cgt: "ti-pru-cgt", board: "am243x-evm", os: "fw"},
{ device: device, cpu: "icssg0-pru1", cgt: "ti-pru-cgt", board: "am243x-lp", os: "fw"},
]; ];
let postBuildSteps = [ let postBuildStepsEVM = [
"$(CG_TOOL_ROOT)/bin/hexpru.exe ${MOTOR_CONTROL_SDK_PATH}/source/position_sense/tamagawa/firmware/tamagawa_master_hexpru.cmd tamagawa_multi_channel_am243x-evm_icssg0-pru1_fw_ti-pru-cgt.out; ${MOTOR_CONTROL_SDK_PATH}/mcu_plus_sdk/tools/bin2header/bin2header.exe tamagawa_multi_channel_am243x-evm_icssg0-pru1_fw_ti-pru-cgt.b00 tamagawa_master_multi_channel_bin.h TamagawaFirmware 4; move tamagawa_master_multi_channel_bin.h ${MOTOR_CONTROL_SDK_PATH}/source/position_sense/tamagawa/firmware/tamagawa_master_multi_channel_bin.h ;" "$(CG_TOOL_ROOT)/bin/hexpru.exe ${MOTOR_CONTROL_SDK_PATH}/source/position_sense/tamagawa/firmware/tamagawa_master_hexpru.cmd tamagawa_multi_channel_am243x-evm_icssg0-pru1_fw_ti-pru-cgt.out; ${MOTOR_CONTROL_SDK_PATH}/mcu_plus_sdk/tools/bin2header/bin2header.exe tamagawa_multi_channel_am243x-evm_icssg0-pru1_fw_ti-pru-cgt.b00 tamagawa_master_multi_channel_bin.h TamagawaFirmware 4; move tamagawa_master_multi_channel_bin.h ${MOTOR_CONTROL_SDK_PATH}/source/position_sense/tamagawa/firmware/tamagawa_master_multi_channel_bin.h ;"
]; ];
let postBuildStepsLP = [
"$(CG_TOOL_ROOT)/bin/hexpru.exe ${MOTOR_CONTROL_SDK_PATH}/source/position_sense/tamagawa/firmware/tamagawa_master_hexpru.cmd tamagawa_multi_channel_am243x-lp_icssg0-pru1_fw_ti-pru-cgt.out; ${MOTOR_CONTROL_SDK_PATH}/mcu_plus_sdk/tools/bin2header/bin2header.exe tamagawa_multi_channel_am243x-lp_icssg0-pru1_fw_ti-pru-cgt.b00 tamagawa_master_multi_channel_bin.h TamagawaFirmware 4; move tamagawa_master_multi_channel_bin.h ${MOTOR_CONTROL_SDK_PATH}/source/position_sense/tamagawa/firmware/tamagawa_master_multi_channel_bin.h ;"
];
function getComponentProperty() { function getComponentProperty() {
let property = {}; let property = {};
@ -67,8 +72,6 @@ function getComponentProperty() {
property.pru_linker_file = "linker"; property.pru_linker_file = "linker";
property.isSkipTopLevelBuild = true; property.isSkipTopLevelBuild = true;
property.skipUpdatingTirex = true; property.skipUpdatingTirex = true;
property.postBuildSteps = postBuildSteps;
return property; return property;
} }
@ -85,6 +88,16 @@ function getComponentBuildProperty(buildOption) {
build_property.projecspecFileAction = "copy"; build_property.projecspecFileAction = "copy";
build_property.skipMakefileCcsBootimageGen = true; build_property.skipMakefileCcsBootimageGen = true;
if(buildOption.board.match(/am243x-evm*/) )
{
build_property.postBuildSteps = postBuildStepsEVM;
}
else if(buildOption.board.match(/am243x-lp*/) )
{
build_property.postBuildSteps = postBuildStepsLP;
}
return build_property; return build_property;
} }

View File

@ -0,0 +1,75 @@
<?xml version="1.0" encoding="UTF-8"?>
<projectSpec>
<applicability>
<when>
<context
deviceFamily="PRU"
deviceId="AM243x_LAUNCHPAD"
/>
</when>
</applicability>
<project
title="Tamagawa Multi Channel"
name = "tamagawa_multi_channel_am243x-lp_icssg0-pru1_fw_ti-pru-cgt"
products="com.ti.MOTOR_CONTROL_SDK_AMXXX;"
configurations="
Release,
Debug,
"
connection="TIXDS110_Connection.xml"
toolChain="TI"
cgtVersion="2.3.3"
device="AM243x_LAUNCHPAD"
deviceCore="ICSS_G0_PRU_1"
ignoreDefaultDeviceSettings="true"
ignoreDefaultCCSSettings="true"
endianness="little"
outputFormat="ELF"
outputType="executable"
compilerBuildOptions="
-I${MOTOR_CONTROL_SDK_PATH}/source/position_sense/tamagawa/firmware
-DICSSG0
-DPRU1
-DSLICE1
-v4
-DSOC_AM243X
-DENABLE_MULTI_CHANNEL
"
linkerBuildOptions="
-m=tamagawa_multi_channel.${ConfigName}.map
--entry_point=TAMAGAWA_INIT
--disable_auto_rts
"
postBuildStep="
$(CG_TOOL_ROOT)/bin/hexpru.exe ${MOTOR_CONTROL_SDK_PATH}/source/position_sense/tamagawa/firmware/tamagawa_master_hexpru.cmd tamagawa_multi_channel_am243x-lp_icssg0-pru1_fw_ti-pru-cgt.out; ${MOTOR_CONTROL_SDK_PATH}/mcu_plus_sdk/tools/bin2header/bin2header.exe tamagawa_multi_channel_am243x-lp_icssg0-pru1_fw_ti-pru-cgt.b00 tamagawa_master_multi_channel_bin.h TamagawaFirmware 4; move tamagawa_master_multi_channel_bin.h ${MOTOR_CONTROL_SDK_PATH}/source/position_sense/tamagawa/firmware/tamagawa_master_multi_channel_bin.h ;
"
description="A Tamagawa Multi Channel FW project">
<configuration name="Release"
compilerBuildOptions="
"
linkerBuildOptions="
"
></configuration>
<configuration name="Debug"
compilerBuildOptions="
"
linkerBuildOptions="
"
></configuration>
<pathVariable name="MOTOR_CONTROL_SDK_PATH" path="${COM_TI_MOTOR_CONTROL_SDK_AMXXX_INSTALL_DIR}" scope="project" />
<file path="../../../../tamagawa_main.asm" openOnCreation="false" excludeFromBuild="false" action="copy">
</file>
<file path="../../../../tamagawa_diagnostic.cmd" openOnCreation="false" excludeFromBuild="false" action="copy">
</file>
<file path="../../../../tamagawa_master_hexpru.cmd" openOnCreation="false" excludeFromBuild="false" action="copy">
</file>
<file path="${MOTOR_CONTROL_SDK_PATH}/docs/api_guide_am243x/TAMAGAWA_DESIGN.html"
openOnCreation="false" excludeFromBuild="false" targetName="README.html" action="link">
</file>
</project>
</projectSpec>

View File

@ -0,0 +1,117 @@
################################################################################
# Automatically-generated file. Do not edit!
################################################################################
# Required input arguments:
# MOTOR_CONTROL_SDK_PATH=${MOTOR_CONTROL_SDK_PATH} sdk_dir_path
# CCS_INSTALL_DIR=${CCS_INSTALL_DIR} ccs_dir_path
# CCS_PROJECT_DEBUG=${CWD} project_debug_dir_path
SHELL = cmd.exe
CCS_PATH?=$(CCS_INSTALL_DIR)/ccs_base/pru/include
CG_TOOL_ROOT := C:/ti/ti-cgt-pru_2.3.3
SYSCFG_DIR := $(CCS_PROJECT_DEBUG)/syscfg
GEN_OPTS__FLAG :=
GEN_CMDS__FLAG :=
ORDERED_OBJS += \
"./main.obj" \
"${MOTOR_CONTROL_SDK_PATH}/source/position_sense/tamagawa/firmware/multi_channel/am243x-lp/icssg0-pru1_fw/ti-pru-cgt/linker.cmd" \
$(GEN_CMDS__FLAG) \
-llibc.a \
-include ../makefile.init
RM := DEL /F
RMDIR := RMDIR /S/Q
# Every subdirectory with source files must be described here
SUBDIRS := \
. \
# Add inputs and outputs from these tool invocations to the build variables
CMD_SRCS += \
${MOTOR_CONTROL_SDK_PATH}/source/position_sense/tamagawa/firmware/multi_channel/am243x-lp/icssg0-pru1_fw/ti-pru-cgt/linker.cmd \
ASM_SRCS += \
${MOTOR_CONTROL_SDK_PATH}/source/position_sense/tamagawa/firmware/multi_channel/main.asm
OBJS += \
./main.obj
ASM_DEPS += \
./main.d
OBJS__QUOTED += \
"main.obj"
ASM_DEPS__QUOTED += \
"main.d"
ASM_SRCS__QUOTED += \
"${MOTOR_CONTROL_SDK_PATH}/source/position_sense/tamagawa/firmware/multi_channel/main.asm"
# Each subdirectory must supply rules for building sources it contributes
main.obj: ${MOTOR_CONTROL_SDK_PATH}/source/position_sense/tamagawa/firmware/multi_channel/main.asm $(GEN_OPTS) | $(GEN_FILES) $(GEN_MISC_FILES)
@echo 'Building file: "$<"'
@echo 'Invoking: PRU Compiler'
"$(CG_TOOL_ROOT)/bin/clpru" -DICSSG0 -DPRU1 -DSLICE1 -v4 --define=SOC_AM243X --define=ENABLE_MULTI_CHANNEL --include_path="$(CCS_PATH)" --include_path="$(SYSCFG_DIR)" --include_path="${MOTOR_CONTROL_SDK_PATH}/source/position_sense/tamagawa/firmware" --define=_DEBUG_=1 -g --diag_warning=225 --diag_wrap=off --display_error_number --endian=little --preproc_with_compile --preproc_dependency="$(basename $(<F)).d_raw" $(GEN_OPTS__FLAG) "$<"
@echo 'Finished building: "$<"'
@echo ' '
LIBS := -llibc.a
-include ../makefile.defs
# Add inputs and outputs from these tool invocations to the build variables
EXE_OUTPUTS += \
tamagawa_multi_channel_am243x-lp_icssg0-pru1_fw_ti-pru-cgt.out \
EXE_OUTPUTS__QUOTED += \
"tamagawa_multi_channel_am243x-lp_icssg0-pru1_fw_ti-pru-cgt.out" \
BIN_OUTPUTS += \
tamagawa_multi_channel_am243x-lp_icssg0-pru1_fw_ti-pru-cgt.hex \
BIN_OUTPUTS__QUOTED += \
"tamagawa_multi_channel_am243x-lp_icssg0-pru1_fw_ti-pru-cgt.hex" \
# All Target
all: $(OBJS) $(CMD_SRCS) $(GEN_CMDS)
@$(MAKE) --no-print-directory -Onone "tamagawa_multi_channel_am243x-lp_icssg0-pru1_fw_ti-pru-cgt.out"
# Tool invocations
tamagawa_multi_channel_am243x-lp_icssg0-pru1_fw_ti-pru-cgt.out: $(OBJS) $(CMD_SRCS) $(GEN_CMDS)
@echo 'Building target: "$@"'
@echo 'Invoking: PRU Linker'
"$(CG_TOOL_ROOT)/bin/clpru" -DICSSG0 -DPRU1 -DSLICE1 -v4 --define=SOC_AM243X --define=ENABLE_MULTI_CHANNEL --define=_DEBUG_=1 -g --diag_warning=225 --diag_wrap=off --display_error_number --endian=little -z -m"tamagawa_multi_channel_am243x-lp_icssg0-pru1_fw_ti-pru-cgt.map" -i"$(CG_TOOL_ROOT)/lib" --diag_wrap=off --display_error_number --warn_sections --xml_link_info="tamagawa_multi_channel_am243x-lp_icssg0-pru1_fw_ti-pru-cgt_linkInfo.xml" --rom_model -o "tamagawa_multi_channel_am243x-lp_icssg0-pru1_fw_ti-pru-cgt.out" $(ORDERED_OBJS)
@echo 'Finished building target: "$@"'
@echo ' '
@$(MAKE) --no-print-directory post-build
tamagawa_multi_channel_am243x-lp_icssg0-pru1_fw_ti-pru-cgt.hex: $(EXE_OUTPUTS)
@echo 'Building secondary target: "$@"'
@echo 'Invoking: PRU Hex Utility'
"$(CG_TOOL_ROOT)/bin/hexpru" -o "tamagawa_multi_channel_am243x-lp_icssg0-pru1_fw_ti-pru-cgt.hex" $(EXE_OUTPUTS__QUOTED)
@echo 'Finished building secondary target: "$@"'
@echo ' '
@$(MAKE) --no-print-directory post-build
# Other Targets
clean:
-$(RM) $(BIN_OUTPUTS__QUOTED)$(EXE_OUTPUTS__QUOTED)
-$(RM) "main.obj"
-$(RM) "main.d"
-@echo 'Finished clean'
-@echo ' '
post-build:
-$(CG_TOOL_ROOT)/bin/hexpru.exe ${MOTOR_CONTROL_SDK_PATH}/source/position_sense/tamagawa/firmware/tamagawa_master_hexpru.cmd tamagawa_multi_channel_am243x-lp_icssg0-pru1_fw_ti-pru-cgt.out; ${MOTOR_CONTROL_SDK_PATH}/mcu_plus_sdk/tools/bin2header/bin2header.exe tamagawa_multi_channel_am243x-lp_icssg0-pru1_fw_ti-pru-cgt.b00 tamagawa_master_multi_channel_bin.h TamagawaFirmware 4; move tamagawa_master_multi_channel_bin.h ${MOTOR_CONTROL_SDK_PATH}/source/position_sense/tamagawa/firmware/tamagawa_master_multi_channel_bin.h
-@echo ' '
.PHONY: all clean dependents
.SECONDARY:
-include ../makefile.targets

View File

@ -0,0 +1,20 @@
#
# Auto generated makefile
#
export MOTOR_CONTROL_SDK_PATH?=$(abspath ../../../../../../../..)
include $(MOTOR_CONTROL_SDK_PATH)/imports.mak
PROFILE?=Release
PROJECT_NAME=tamagawa_multi_channel_am243x-lp_icssg0-pru1_fw_ti-pru-cgt
all:
$(CCS_ECLIPSE) -noSplash -data $(MOTOR_CONTROL_SDK_PATH)/ccs_projects -application com.ti.ccstudio.apps.projectBuild -ccs.projects $(PROJECT_NAME) -ccs.configuration $(PROFILE)
clean:
$(CCS_ECLIPSE) -noSplash -data $(MOTOR_CONTROL_SDK_PATH)/ccs_projects -application com.ti.ccstudio.apps.projectBuild -ccs.projects $(PROJECT_NAME) -ccs.configuration $(PROFILE) -ccs.clean
export:
$(MKDIR) $(MOTOR_CONTROL_SDK_PATH)/ccs_projects
$(CCS_ECLIPSE) -noSplash -data $(MOTOR_CONTROL_SDK_PATH)/ccs_projects -application com.ti.ccstudio.apps.projectCreate -ccs.projectSpec example.projectspec -ccs.overwrite full

View File

@ -172,11 +172,26 @@ TAMAGAWA_SKIP_INIT_SUCCESS:
LDI R0.b0, 1 LDI R0.b0, 1
;Initialization successful status update ends here ;Initialization successful status update ends here
SBCO &R0.b0, PRUx_DMEM, TAMAGAWA_INTFC_CMD_STATUS_OFFSET, 1 SBCO &R0.b0, PRUx_DMEM, TAMAGAWA_INTFC_CMD_STATUS_OFFSET, 1
CHECK_OPERATING_MODE:
LBCO &R0.b0, PRUx_DMEM, TAMAGAWA_OPMODE_CONFIG_OFFSET, 1 LBCO &R0.b0, PRUx_DMEM, TAMAGAWA_OPMODE_CONFIG_OFFSET, 1
;If opmode=1, Host trigger is done ;If opmode=1, Host trigger is done
;If opmode=0, Periodic trigger is done ;If opmode=0, Periodic trigger is done
QBNE HANDLE_HOST_TRIGGER_MODE, R0.b0, 0 QBNE HANDLE_HOST_TRIGGER_MODE, R0.b0, 0
HANDLE_PERIODIC_TRIGGER_MODE:
;Get compare event status
LBCO &R0, ICSS_IEP, ICSS_IEP_CMP_STATUS_REG, 4
; wait till IEP CMP3 event
QBBC HANDLE_PERIODIC_TRIGGER_MODE, R0, 3
; Clear IEP CMP3 event
SET R0, R0, 3
; store compare event status
SBCO &R0, ICSS_IEP, ICSS_IEP_CMP_STATUS_REG, 4
; SET command TRIGGER
LDI R0.b0, 1
SBCO &R0.b0, PRUx_DMEM, TAMAGAWA_INTFC_CMD_TRIGGER_OFFSET, 1
HANDLE_HOST_TRIGGER_MODE: HANDLE_HOST_TRIGGER_MODE:
;If Host Trigger=1, request made by R5F to Firmware, now Firmware do processing and when done set trigger to 0 so that R5F application can act further. ;If Host Trigger=1, request made by R5F to Firmware, now Firmware do processing and when done set trigger to 0 so that R5F application can act further.
LBCO &R0.b0, PRUx_DMEM, TAMAGAWA_INTFC_CMD_TRIGGER_OFFSET, 1 LBCO &R0.b0, PRUx_DMEM, TAMAGAWA_INTFC_CMD_TRIGGER_OFFSET, 1
@ -197,6 +212,18 @@ TAMAGAWA_HOST_CMD_END:
LDI R3.w0, 0 LDI R3.w0, 0
;Clear Host Trigger ;Clear Host Trigger
SBCO &R3.b0, PRUx_DMEM, TAMAGAWA_INTFC_CMD_TRIGGER_OFFSET, 1 SBCO &R3.b0, PRUx_DMEM, TAMAGAWA_INTFC_CMD_TRIGGER_OFFSET, 1
;check PRU host trigger for all three channels
LBCO &R3.b0, PRUx_DMEM, TAMAGAWA_OPMODE_CONFIG_OFFSET, 1
;skip interrupt to R5F in host trigger
QBNE SKIP_INTERRUPT_TRIGGER, R3.b0, 0
;Generate interrupt to R5F
LDI R31.w0, 34;PRU_TRIGGER_HOST_TAMAGAWA_EVT0 ( pr0_pru_mst_intr[2]_intr_req )
;Global reinit
set R31, TAMAGAWA_TX_GLOBAL_REINIT
;Handle next Postition in periodic trigger
JMP HANDLE_PERIODIC_TRIGGER_MODE
SKIP_INTERRUPT_TRIGGER:
;Handle next Position request by user. ;Handle next Position request by user.
JMP HANDLE_HOST_TRIGGER_MODE JMP HANDLE_HOST_TRIGGER_MODE

View File

@ -71,21 +71,30 @@ const unsigned int TamagawaFirmware[]= {
0x91401880, 0x91401880,
0x914418c0, 0x914418c0,
0x91481801, 0x91481801,
0x23013888, 0x23014188,
0x24000100, 0x24000100,
0x81031800, 0x81031800,
0x91001800, 0x91001800,
0x69000001, 0x69000006,
0x91743a80,
0xcf03e0fd,
0x1f03e0e0,
0x81743a80,
0x81021800,
0x91021800, 0x91021800,
0x570000ff, 0x570000ff,
0x9104181b, 0x9104181b,
0x9105183b, 0x9105183b,
0x91081821, 0x91081821,
0x91091806, 0x91091806,
0x23001f88, 0x23002888,
0x24000083, 0x24000083,
0x81021803, 0x81021803,
0x21001500, 0x91001803,
0x69000302,
0x2400229f,
0x570003ed,
0x21001a00,
0xc9000702, 0xc9000702,
0x240000de, 0x240000de,
0xc9010702, 0xc9010702,
@ -102,32 +111,32 @@ const unsigned int TamagawaFirmware[]= {
0x101b1b1e, 0x101b1b1e,
0x103b3b1e, 0x103b3b1e,
0x05015e5e, 0x05015e5e,
0x2300fec8, 0x230107c8,
0x21008f00, 0x21009800,
0x31020016, 0x31020016,
0xc9000705, 0xc9000705,
0x11035e1a, 0x11035e1a,
0x69001a03, 0x69001a03,
0x2400881a, 0x2400881a,
0x21004100, 0x21004a00,
0xc9010705, 0xc9010705,
0x11035e1a, 0x11035e1a,
0x69011a03, 0x69011a03,
0x2400b01a, 0x2400b01a,
0x21004100, 0x21004a00,
0xc9020705, 0xc9020705,
0x11035e1a, 0x11035e1a,
0x69021a03, 0x69021a03,
0x2400d81a, 0x2400d81a,
0x21004100, 0x21004a00,
0x901a3899, 0x901a3899,
0x1079791e, 0x1079791e,
0x1059591e, 0x1059591e,
0x1039391e, 0x1039391e,
0x1019191e, 0x1019191e,
0x05015e5e, 0x05015e5e,
0x2300fec8, 0x230107c8,
0x21008f00, 0x21009800,
0x31020026, 0x31020026,
0xc900070c, 0xc900070c,
0x11035e1a, 0x11035e1a,
@ -140,7 +149,7 @@ const unsigned int TamagawaFirmware[]= {
0x1079791e, 0x1079791e,
0x1059591e, 0x1059591e,
0x1039391e, 0x1039391e,
0x21006e00, 0x21007700,
0xc901070c, 0xc901070c,
0x11035e1a, 0x11035e1a,
0x69011a0a, 0x69011a0a,
@ -152,7 +161,7 @@ const unsigned int TamagawaFirmware[]= {
0x1079791e, 0x1079791e,
0x1059591e, 0x1059591e,
0x1039391e, 0x1039391e,
0x21006e00, 0x21007700,
0xc902070c, 0xc902070c,
0x11035e1a, 0x11035e1a,
0x69021a0a, 0x69021a0a,
@ -164,9 +173,9 @@ const unsigned int TamagawaFirmware[]= {
0x1079791e, 0x1079791e,
0x1059591e, 0x1059591e,
0x1039391e, 0x1039391e,
0x21006e00, 0x21007700,
0x05015e5e, 0x05015e5e,
0x2300fec8, 0x230107c8,
0x2eff819a, 0x2eff819a,
0x100a0a5e, 0x100a0a5e,
0x3102001d, 0x3102001d,
@ -178,7 +187,7 @@ const unsigned int TamagawaFirmware[]= {
0x2400881a, 0x2400881a,
0x901a1819, 0x901a1819,
0x1019191e, 0x1019191e,
0x21008e00, 0x21009700,
0xc9010709, 0xc9010709,
0x11035e1a, 0x11035e1a,
0x69011a07, 0x69011a07,
@ -187,7 +196,7 @@ const unsigned int TamagawaFirmware[]= {
0x2400b01a, 0x2400b01a,
0x901a1819, 0x901a1819,
0x1019191e, 0x1019191e,
0x21008e00, 0x21009700,
0xc9020709, 0xc9020709,
0x11035e1a, 0x11035e1a,
0x69021a07, 0x69021a07,
@ -196,7 +205,7 @@ const unsigned int TamagawaFirmware[]= {
0x2400d81a, 0x2400d81a,
0x901a1819, 0x901a1819,
0x1019191e, 0x1019191e,
0x21008e00, 0x21009700,
0x05015e5e, 0x05015e5e,
0x2eff9d8b, 0x2eff9d8b,
0x2eff8183, 0x2eff8183,
@ -222,13 +231,13 @@ const unsigned int TamagawaFirmware[]= {
0x10077f1c, 0x10077f1c,
0x6e071cff, 0x6e071cff,
0xd104ff02, 0xd104ff02,
0x2100a900, 0x2100b200,
0x1f070b0b, 0x1f070b0b,
0xd10cff02, 0xd10cff02,
0x2100ac00, 0x2100b500,
0x1f072b2b, 0x1f072b2b,
0xd114ff02, 0xd114ff02,
0x2100af00, 0x2100b800,
0x1f074b4b, 0x1f074b4b,
0x101c1c7f, 0x101c1c7f,
0x100b0b0c, 0x100b0b0c,
@ -254,18 +263,18 @@ const unsigned int TamagawaFirmware[]= {
0x09012727, 0x09012727,
0x09014b4b, 0x09014b4b,
0x12262727, 0x12262727,
0x2100d700, 0x2100e000,
0x24000003, 0x24000003,
0x24000023, 0x24000023,
0x24000043, 0x24000043,
0x50460b04, 0x50460b04,
0x50662b05, 0x50662b05,
0x50274b06, 0x50274b06,
0x2100d400, 0x2100dd00,
0x24000103, 0x24000103,
0x2100cc00, 0x2100d500,
0x24000123, 0x24000123,
0x2100cd00, 0x2100d600,
0x24000143, 0x24000143,
0x81183883, 0x81183883,
0x812838a3, 0x812838a3,
@ -279,25 +288,25 @@ const unsigned int TamagawaFirmware[]= {
0x5108240a, 0x5108240a,
0x510c240f, 0x510c240f,
0x51000614, 0x51000614,
0x21009a00, 0x2100a300,
0x10ececf0, 0x10ececf0,
0x10ededf3, 0x10ededf3,
0x10eeeef6, 0x10eeeef6,
0x2eff858c, 0x2eff858c,
0x51004412, 0x51004412,
0x2100df00, 0x2100e800,
0x10ececf1, 0x10ececf1,
0x10ededf4, 0x10ededf4,
0x10eeeef7, 0x10eeeef7,
0x2eff858c, 0x2eff858c,
0x5100440c, 0x5100440c,
0x2100df00, 0x2100e800,
0x10ececf2, 0x10ececf2,
0x10ededf5, 0x10ededf5,
0x10eeeef8, 0x10eeeef8,
0x2eff858c, 0x2eff858c,
0x51004406, 0x51004406,
0x2100df00, 0x2100e800,
0x24000044, 0x24000044,
0x670424ed, 0x670424ed,
0x670824f2, 0x670824f2,
@ -318,9 +327,9 @@ const unsigned int TamagawaFirmware[]= {
0x51087a04, 0x51087a04,
0x51047a05, 0x51047a05,
0x13500202, 0x13500202,
0x21010b00, 0x21011400,
0x13f00202, 0x13f00202,
0x21010b00, 0x21011400,
0x11000202, 0x11000202,
0x2401099d, 0x2401099d,
0x809d0402, 0x809d0402,
@ -335,9 +344,9 @@ const unsigned int TamagawaFirmware[]= {
0x51087a04, 0x51087a04,
0x51047a05, 0x51047a05,
0x13500202, 0x13500202,
0x21011c00, 0x21012500,
0x13f00202, 0x13f00202,
0x21011c00, 0x21012500,
0x11000202, 0x11000202,
0x2401119d, 0x2401119d,
0x809d0402, 0x809d0402,
@ -352,9 +361,9 @@ const unsigned int TamagawaFirmware[]= {
0x51087a04, 0x51087a04,
0x51047a05, 0x51047a05,
0x13500202, 0x13500202,
0x21012d00, 0x21013600,
0x13f00202, 0x13f00202,
0x21012d00, 0x21013600,
0x11000202, 0x11000202,
0x2401199d, 0x2401199d,
0x809d0402, 0x809d0402,

View File

@ -76,21 +76,32 @@ const unsigned int TamagawaFirmware[]= {
0x91401880, 0x91401880,
0x914418c0, 0x914418c0,
0x91481801, 0x91481801,
0x23018e88, 0x23019988,
0x24000100, 0x24000100,
0x81031800, 0x81031800,
0x91001800, 0x91001800,
0x69000001, 0x69000007,
0x91743a80,
0xcf03e0ff,
0x1f03e0e0,
0x81743a80,
0x24000100,
0x81021800,
0x91021800, 0x91021800,
0x570000ff, 0x570000ff,
0x9104181b, 0x9104181b,
0x9105183b, 0x9105183b,
0x91081821, 0x91081821,
0x91091806, 0x91091806,
0x23002488, 0x23002f88,
0x24000083, 0x24000083,
0x81021803, 0x81021803,
0x91001803,
0x69000304,
0x2400229f,
0x1f13ffff,
0x21001a00, 0x21001a00,
0x21002000,
0xc9000702, 0xc9000702,
0x240000de, 0x240000de,
0xc9010702, 0xc9010702,
@ -105,30 +116,30 @@ const unsigned int TamagawaFirmware[]= {
0x51047a1b, 0x51047a1b,
0x101b1b1e, 0x101b1b1e,
0x103b3b1e, 0x103b3b1e,
0x230150c8, 0x23015bc8,
0x21008c00, 0x21009700,
0xc9000705, 0xc9000705,
0x11035e1a, 0x11035e1a,
0x69001a03, 0x69001a03,
0x2400881a, 0x2400881a,
0x21004300, 0x21004e00,
0xc9010705, 0xc9010705,
0x11035e1a, 0x11035e1a,
0x69011a03, 0x69011a03,
0x2400b01a, 0x2400b01a,
0x21004300, 0x21004e00,
0xc9020705, 0xc9020705,
0x11035e1a, 0x11035e1a,
0x69021a03, 0x69021a03,
0x2400d81a, 0x2400d81a,
0x21004300, 0x21004e00,
0x901a3899, 0x901a3899,
0x1079791e, 0x1079791e,
0x1059591e, 0x1059591e,
0x1039391e, 0x1039391e,
0x1019191e, 0x1019191e,
0x230150c8, 0x23015bc8,
0x21008c00, 0x21009700,
0xc900070c, 0xc900070c,
0x11035e1a, 0x11035e1a,
0x69001a0a, 0x69001a0a,
@ -140,7 +151,7 @@ const unsigned int TamagawaFirmware[]= {
0x1079791e, 0x1079791e,
0x1059591e, 0x1059591e,
0x1039391e, 0x1039391e,
0x21006e00, 0x21007900,
0xc901070c, 0xc901070c,
0x11035e1a, 0x11035e1a,
0x69011a0a, 0x69011a0a,
@ -152,7 +163,7 @@ const unsigned int TamagawaFirmware[]= {
0x1079791e, 0x1079791e,
0x1059591e, 0x1059591e,
0x1039391e, 0x1039391e,
0x21006e00, 0x21007900,
0xc902070c, 0xc902070c,
0x11035e1a, 0x11035e1a,
0x69021a0a, 0x69021a0a,
@ -164,8 +175,8 @@ const unsigned int TamagawaFirmware[]= {
0x1079791e, 0x1079791e,
0x1059591e, 0x1059591e,
0x1039391e, 0x1039391e,
0x21006e00, 0x21007900,
0x230150c8, 0x23015bc8,
0x2eff819a, 0x2eff819a,
0x100a0a5e, 0x100a0a5e,
0xc9000709, 0xc9000709,
@ -176,7 +187,7 @@ const unsigned int TamagawaFirmware[]= {
0x2400881a, 0x2400881a,
0x901a1819, 0x901a1819,
0x1019191e, 0x1019191e,
0x21008c00, 0x21009700,
0xc9010709, 0xc9010709,
0x11035e1a, 0x11035e1a,
0x69011a07, 0x69011a07,
@ -185,7 +196,7 @@ const unsigned int TamagawaFirmware[]= {
0x2400b01a, 0x2400b01a,
0x901a1819, 0x901a1819,
0x1019191e, 0x1019191e,
0x21008c00, 0x21009700,
0xc9020709, 0xc9020709,
0x11035e1a, 0x11035e1a,
0x69021a07, 0x69021a07,
@ -194,7 +205,7 @@ const unsigned int TamagawaFirmware[]= {
0x2400d81a, 0x2400d81a,
0x901a1819, 0x901a1819,
0x1019191e, 0x1019191e,
0x21008c00, 0x21009700,
0x2eff9d8b, 0x2eff9d8b,
0x2eff8183, 0x2eff8183,
0x2eff8185, 0x2eff8185,
@ -220,7 +231,7 @@ const unsigned int TamagawaFirmware[]= {
0x11017f1c, 0x11017f1c,
0x6f011cff, 0x6f011cff,
0xd104ff02, 0xd104ff02,
0x2100a700, 0x2100b200,
0x1f070b0b, 0x1f070b0b,
0x101c1c7f, 0x101c1c7f,
0x100b0b0c, 0x100b0b0c,
@ -232,10 +243,10 @@ const unsigned int TamagawaFirmware[]= {
0x09010303, 0x09010303,
0x09010b0b, 0x09010b0b,
0x12630303, 0x12630303,
0x2100b700, 0x2100c200,
0x24000023, 0x24000023,
0x50030b02, 0x50030b02,
0x2100b600, 0x2100c100,
0x24000123, 0x24000123,
0x811838a3, 0x811838a3,
0x01012424, 0x01012424,
@ -247,19 +258,19 @@ const unsigned int TamagawaFirmware[]= {
0x51082408, 0x51082408,
0x510c240b, 0x510c240b,
0x5100060e, 0x5100060e,
0x21009900, 0x2100a400,
0x10ececf0, 0x10ececf0,
0x2eff818c, 0x2eff818c,
0x5100440e, 0x5100440e,
0x2100bf00, 0x2100ca00,
0x10ececf1, 0x10ececf1,
0x2eff818c, 0x2eff818c,
0x5100440a, 0x5100440a,
0x2100bf00, 0x2100ca00,
0x10ececf2, 0x10ececf2,
0x2eff818c, 0x2eff818c,
0x51004406, 0x51004406,
0x2100bf00, 0x2100ca00,
0x24000044, 0x24000044,
0x670424f3, 0x670424f3,
0x670824f6, 0x670824f6,
@ -282,7 +293,7 @@ const unsigned int TamagawaFirmware[]= {
0x11027f1c, 0x11027f1c,
0x6f021cff, 0x6f021cff,
0xd10cff02, 0xd10cff02,
0x2100e500, 0x2100f000,
0x1f070b0b, 0x1f070b0b,
0x101c1c7f, 0x101c1c7f,
0x100b0b0c, 0x100b0b0c,
@ -294,10 +305,10 @@ const unsigned int TamagawaFirmware[]= {
0x09010303, 0x09010303,
0x09010b0b, 0x09010b0b,
0x12630303, 0x12630303,
0x2100f500, 0x21010000,
0x24000023, 0x24000023,
0x50030b02, 0x50030b02,
0x2100f400, 0x2100ff00,
0x24000123, 0x24000123,
0x812838a3, 0x812838a3,
0x01012424, 0x01012424,
@ -309,19 +320,19 @@ const unsigned int TamagawaFirmware[]= {
0x51082408, 0x51082408,
0x510c240b, 0x510c240b,
0x5100060e, 0x5100060e,
0x2100d700, 0x2100e200,
0x10ececf0, 0x10ececf0,
0x2eff818c, 0x2eff818c,
0x5100440e, 0x5100440e,
0x2100fd00, 0x21010800,
0x10ececf1, 0x10ececf1,
0x2eff818c, 0x2eff818c,
0x5100440a, 0x5100440a,
0x2100fd00, 0x21010800,
0x10ececf2, 0x10ececf2,
0x2eff818c, 0x2eff818c,
0x51004406, 0x51004406,
0x2100fd00, 0x21010800,
0x24000044, 0x24000044,
0x670424f3, 0x670424f3,
0x670824f6, 0x670824f6,
@ -344,7 +355,7 @@ const unsigned int TamagawaFirmware[]= {
0x11047f1c, 0x11047f1c,
0x6f041cff, 0x6f041cff,
0xd114ff02, 0xd114ff02,
0x21012300, 0x21012e00,
0x1f070b0b, 0x1f070b0b,
0x101c1c7f, 0x101c1c7f,
0x100b0b0c, 0x100b0b0c,
@ -356,10 +367,10 @@ const unsigned int TamagawaFirmware[]= {
0x09010303, 0x09010303,
0x09010b0b, 0x09010b0b,
0x12630303, 0x12630303,
0x21013300, 0x21013e00,
0x24000023, 0x24000023,
0x50030b02, 0x50030b02,
0x21013200, 0x21013d00,
0x24000123, 0x24000123,
0x813838a3, 0x813838a3,
0x01012424, 0x01012424,
@ -371,19 +382,19 @@ const unsigned int TamagawaFirmware[]= {
0x51082408, 0x51082408,
0x510c240b, 0x510c240b,
0x5100060e, 0x5100060e,
0x21011500, 0x21012000,
0x10ececf0, 0x10ececf0,
0x2eff818c, 0x2eff818c,
0x5100440e, 0x5100440e,
0x21013b00, 0x21014600,
0x10ececf1, 0x10ececf1,
0x2eff818c, 0x2eff818c,
0x5100440a, 0x5100440a,
0x21013b00, 0x21014600,
0x10ececf2, 0x10ececf2,
0x2eff818c, 0x2eff818c,
0x51004406, 0x51004406,
0x21013b00, 0x21014600,
0x24000044, 0x24000044,
0x670424f3, 0x670424f3,
0x670824f6, 0x670824f6,
@ -400,9 +411,9 @@ const unsigned int TamagawaFirmware[]= {
0x51087a04, 0x51087a04,
0x51047a05, 0x51047a05,
0x13500202, 0x13500202,
0x21015d00, 0x21016800,
0x13f00202, 0x13f00202,
0x21015d00, 0x21016800,
0x11000202, 0x11000202,
0x2401099d, 0x2401099d,
0x809d0402, 0x809d0402,
@ -417,9 +428,9 @@ const unsigned int TamagawaFirmware[]= {
0x51087a04, 0x51087a04,
0x51047a05, 0x51047a05,
0x13500202, 0x13500202,
0x21016e00, 0x21017900,
0x13f00202, 0x13f00202,
0x21016e00, 0x21017900,
0x11000202, 0x11000202,
0x2401119d, 0x2401119d,
0x809d0402, 0x809d0402,
@ -434,9 +445,9 @@ const unsigned int TamagawaFirmware[]= {
0x51087a04, 0x51087a04,
0x51047a05, 0x51047a05,
0x13500202, 0x13500202,
0x21017f00, 0x21018a00,
0x13f00202, 0x13f00202,
0x21017f00, 0x21018a00,
0x11000202, 0x11000202,
0x2401199d, 0x2401199d,
0x809d0402, 0x809d0402,

View File

@ -105,6 +105,7 @@ enum data_id
DATA_ID_8, /**< Reset */ DATA_ID_8, /**< Reset */
DATA_ID_C, /**< Reset */ DATA_ID_C, /**< Reset */
DATA_ID_D, /**< EEPROM read */ DATA_ID_D, /**< EEPROM read */
PERIODIC_TRIGGER_CMD, /**< periodic trigger command */
DATA_ID_NUM /**< Number of Data ID codes */ DATA_ID_NUM /**< Number of Data ID codes */
}; };
@ -280,6 +281,8 @@ struct tamagawa_priv
void *pruss_cfg; /**< ICSS PRU config base address*/ void *pruss_cfg; /**< ICSS PRU config base address*/
int32_t slice_value; /**< PRUx Slice being used*/ int32_t slice_value; /**< PRUx Slice being used*/
struct register_offsets register_offset_val; /**< Register offset values based on PRUx slice selection*/ struct register_offsets register_offset_val; /**< Register offset values based on PRUx slice selection*/
void *pruss_iep; /**< ICSS IEP base address*/
uint64_t cmp3; /**< IEP CMP3 reg used in periodic trigger mode*/
}; };
/* ========================================================================== */ /* ========================================================================== */
@ -404,12 +407,13 @@ void tamagawa_multi_channel_set_cur(struct tamagawa_priv *priv, uint32_t ch);
* *
* \param[in] tamagawa_xchg tamagawa firmware interface address * \param[in] tamagawa_xchg tamagawa firmware interface address
* \param[in] pruss_cfg ICSS PRU config base address * \param[in] pruss_cfg ICSS PRU config base address
* \param[in] pruss_iep ICSS PRU IEP base address
* \param[in] slice_value PRUx slice value : 0 for PRU0 and 1 for PRU1 * \param[in] slice_value PRUx slice value : 0 for PRU0 and 1 for PRU1
* *
* \retval priv pointer to struct tamagawa_priv instance * \retval priv pointer to struct tamagawa_priv instance
* *
*/ */
struct tamagawa_priv *tamagawa_init(struct tamagawa_xchg *tamagawa_xchg, void *pruss_cfg, uint32_t slice_value); struct tamagawa_priv *tamagawa_init(struct tamagawa_xchg *tamagawa_xchg, void *pruss_cfg, void *pruss_iep, uint32_t slice_value);
/** /**
* \brief update the current requested command id in tamagawa interface. <br> * \brief update the current requested command id in tamagawa interface. <br>